我不明白这个查询是如何工作的。它是mysql的一些高级功能,我无法理解?
select A.id from A where A.id in (select B.id from B where B.id = A.id)
答案 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;