你能解释一下这个SQL查询吗?

时间:2016-12-07 09:54:00

标签: mysql sql

我不明白这个查询是如何工作的。它是mysql的一些高级功能,我无法理解?

select A.id from A where A.id in (select B.id from  B where B.id = A.id)

3 个答案:

答案 0 :(得分:2)

一个不必要的相关子查询,它获取表A的id与表B的id匹配的所有行。它也可以写成

select id 
from A 
where id in (select id from  B)

(或)使用INNER JOIN

select a.id 
from A a 
join B b on a.id = b.id;

(OR)使用WHERE EXISTS

select a.id 
from A a
where exists (select 1 from B where id = a.id);

答案 1 :(得分:0)

您看到的是子查询或嵌套查询。内部查询给出一个结果数组,然后外部查询使用此数组来过滤A表的行 整个查询虽然没有意义......
更好的查询是:

SELECT A.id from A JOIN B ON A.id = B.id;

答案 2 :(得分:0)

它只是内部联接

SELECT A.id from A INNER JOIN B ON A.id = B.id;