SQL两表连接查询:多列关联单表获取对应名称字段需求
实现需求的SQL查询方案
要拿到你想要的结果,核心思路是两次关联Details表——因为List里的id_1和id_2都对应Details中的id字段,得给Details表起不同的别名来区分这两次关联操作。
直接上可用的SQL语句:
SELECT d1.name AS id_1_name, d2.name AS id_2_name, l.tym, l.event FROM List l INNER JOIN Details d1 ON l.id_1 = d1.id INNER JOIN Details d2 ON l.id_2 = d2.id ORDER BY l.event;
关键细节说明:
- 给
List表起别名l,主要是为了简化语句书写,让代码更整洁; - 第一次关联
Details用别名d1,通过l.id_1 = d1.id匹配,拿到id_1对应的名称; - 第二次关联
Details用别名d2,通过l.id_2 = d2.id匹配,拿到id_2对应的名称; - 加上
ORDER BY l.event是为了保证结果顺序和你期望的完全一致(如果你的原始List表数据顺序已经按event排列,这一步可以省略,但加上会更稳妥)。
执行这个查询后,返回的结果就是你需要的:
id_1_name | id_2_name | tym | event ----------|-----------|-----|------- a | b | xx | 1 a | c | yy | 2 b | a | zz | 3
内容的提问来源于stack exchange,提问作者Sourav
相关产品推荐
相关产品推荐

