基于SELECT查询结果关联表出错,寻求正确SQL实现方案
解决SQL关联查询的问题
你的核心需求是筛选出tab_1中id_1等于id_2的记录,再关联tab_2中匹配的id_3,最终输出id_1、id_3和name三个字段。你原来的SQL只查询了tab_2的数据,所以没办法获取tab_1的id_1字段,而且关联逻辑可以优化得更清晰高效。
推荐方案:使用INNER JOIN关联查询
这种方式逻辑直观,性能更优,直接把表关联条件和筛选条件整合在一起:
SELECT t1.id_1, t2.id_3, t2.name FROM tab_1 t1 INNER JOIN tab_2 t2 ON t1.id_1 = t2.id_3 WHERE t1.id_1 = t1.id_2;
基于你原有思路的修改版本
如果你想保留IN子查询的写法,需要同时关联tab_1来获取目标字段:
SELECT t1.id_1, t2.id_3, t2.name FROM tab_1 t1 JOIN tab_2 t2 ON t1.id_1 = t2.id_3 WHERE t2.id_3 IN ( SELECT id_1 FROM tab_1 WHERE id_1 = id_2 );
结果验证
运行上述任意一段SQL,都会得到你期望的输出:
id_1 | id_3 | name
ab01 | ab01 | test
ab02 | ab02 | test
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

