为什么这个MySQL交集的语法错误?

为什么这个MySQL交集的语法错误?,mysql,sql,intersect,Mysql,Sql,Intersect,我有两张桌子,a和b: 我正试图到达他们的十字路口。我试过了 (select * a)INTERSECT(select * from b); 还有很多其他的变体,但都做不好。 我需要的是 +-------------+--------+-----------+ | ID_do_aluno | Nome | Sobrenome | +-------------+--------+-----------+ | 154676754 | John | Brown | | 232

我有两张桌子,a和b:

我正试图到达他们的十字路口。我试过了

(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
)