Mysql 你能解释一下这个SQL查询吗?
我不明白这个查询是如何工作的。这是mysql的一些高级功能,我无法理解吗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
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。不是那么高级。相关子查询。