Mysql:从表中选择不在另一个表中的行

如何选择一个表中所有未出现在另一表中的行?


表格1:


+-----------+----------+------------+

| FirstName | LastName | BirthDate  |

+-----------+----------+------------+

| Tia       | Carrera  | 1975-09-18 |

| Nikki     | Taylor   | 1972-03-04 |

| Yamila    | Diaz     | 1972-03-04 |

+-----------+----------+------------+

表2:


+-----------+----------+------------+

| FirstName | LastName | BirthDate  |

+-----------+----------+------------+

| Tia       | Carrera  | 1975-09-18 |

| Nikki     | Taylor   | 1972-03-04 |

+-----------+----------+------------+

表1中不在表2中的行的示例输出:


+-----------+----------+------------+

| FirstName | LastName | BirthDate  |

+-----------+----------+------------+

| Yamila    | Diaz     | 1972-03-04 |

+-----------+----------+------------+

也许这样的事情应该工作:


SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)


白衣染霜花
浏览 444回答 3
3回答

阿波罗的战车

如果您在另一条注释中提到有300列,并且想要对所有列进行比较(假设这些列的名称相同),则可以使用a NATURAL LEFT JOIN隐式联接两个表之间所有匹配的列名称,以便不必繁琐地手动输入所有加入条件:SELECT            a.*FROM              tbl_1 aNATURAL LEFT JOIN tbl_2 bWHERE             b.FirstName IS NULL

回首忆惘然

您需要基于列名而不是进行子选择*。例如,如果您有id两个表共有的字段,则可以执行以下操作:SELECT * FROM Table1 WHERE id NOT IN (SELECT id FROM Table2)

慕标5832272

SELECT *FROM Table1 AS aWHERE NOT EXISTS (  SELECT *  FROM Table2 AS b   WHERE a.FirstName=b.FirstName AND a.LastName=b.Last_Name)EXISTS 会帮助你...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL