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

Mysql 你能解释一下这个SQL查询吗?,mysql,sql,Mysql,Sql,我不明白这个查询是如何工作的。这是mysql的一些高级功能,我无法理解吗 select A.id from A where A.id in (select B.id from B where B.id = A.id) 一个不必要的相关子查询,它获取表A的id与表B的id匹配的所有行。它也可以这样编写 select id from A where id in (select id from B) (或)使用内部联接 select a.id from A a join B b on

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

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

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

select id 
from A 
where id in (select id from  B)
(或)使用
内部联接

select a.id 
from A a 
join B b on a.id = b.id;
(或)在存在的地方使用

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

您看到的是子查询或嵌套查询。内部查询给出一个结果数组,然后外部查询使用该数组筛选表中的行。
但是,整个查询没有意义…
更好的查询是:

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

它只是内部连接而已

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

选择A和B中都存在的
id
s。不是那么高级。相关子查询。