方案一、用exists的方式.

如果test2表中的数据量很大的话,可以用exists的方式:

SELECT c1 from test1 a
WHERE exists (SELECT 1 FROM test2 b
WHERE a.c1 = b.c1);

如果结果集不需要test2表字段,也就是不需要联查取字段,则可行;否则,由于exists的局限,需要loop逐条对结果集进行判断,效率太低

方案二、在b中找唯一的列和a关联,或者增加条件.

select * from test1 left join test2 using(c1);
# using等价于
select * from test1 left join test2 on test1.c1 = test2.c1;

一般查询结果出问题了(没有得到想要的结果),都是一对多关系,所以pass

方案三、group by 关键值.

select * from test1 left join test2 group by c1;

亲测可用

转自以某个表为基准连表查询分析

文章目录