为什么这个MySQL交集的语法错误?
我有两张桌子,a和b: 我正试图到达他们的十字路口。我试过了为什么这个MySQL交集的语法错误?,mysql,sql,intersect,Mysql,Sql,Intersect,我有两张桌子,a和b: 我正试图到达他们的十字路口。我试过了 (select * a)INTERSECT(select * from b); 还有很多其他的变体,但都做不好。 我需要的是 +-------------+--------+-----------+ | ID_do_aluno | Nome | Sobrenome | +-------------+--------+-----------+ | 154676754 | John | Brown | | 232
(select * a)INTERSECT(select * from b);
还有很多其他的变体,但都做不好。
我需要的是
+-------------+--------+-----------+
| ID_do_aluno | Nome | Sobrenome |
+-------------+--------+-----------+
| 154676754 | John | Brown |
| 232565690 | George | Yellow |
+-------------+--------+-----------+
提前感谢,很抱歉乞丐很难在foruns&documentation中找到这个讨论得很好的主题 不幸的是,MySQL没有交集。MySQL中没有交集。相反,使用存在于或位于:
MySql不支持的模拟INTERSECT的正确方法是,使用null safe equal运算符将a的每一列与其对应的b列进行比较,以便将null值视为相等。 此外,INTERSECT在支持它的数据库中返回不同的行
哇!不知道MySQL的实现与as没有区别+我就是为了这个。
(select * a)INTERSECT(select * from b);
+-------------+--------+-----------+
| ID_do_aluno | Nome | Sobrenome |
+-------------+--------+-----------+
| 154676754 | John | Brown |
| 232565690 | George | Yellow |
+-------------+--------+-----------+
select ID_do_aluno, Nome, Sobrenome
from a
where (a.ID_do_aluno, a.Nome, a.Sobrenome) in (select b.ID_do_aluno, b.Nome, b.Sobrenome from b)
SELECT DISTINCT a.ID_do_aluno, a.Nome, a.Sobrenome
FROM a
WHERE EXISTS (
SELECT 1 FROM b
WHERE b.ID_do_aluno <=> a.ID_do_aluno AND b.Nome <=> a.Nome AND b.Sobrenome <=> a.Sobrenome
)