为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣染霜花 2019-12-21 12:34:06
如何选择一个表中所有未出现在另一表中的行?表格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)
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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


SELECT            a.*

FROM              tbl_1 a

NATURAL LEFT JOIN tbl_2 b

WHERE             b.FirstName IS NULL


查看完整回答
反对 回复 2019-12-21
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您需要基于列名而不是进行子选择*。


例如,如果您有id两个表共有的字段,则可以执行以下操作:


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


查看完整回答
反对 回复 2019-12-21
?
慕标5832272

TA贡献1966条经验 获得超4个赞

SELECT *

FROM Table1 AS a

WHERE NOT EXISTS (

  SELECT *

  FROM Table2 AS b 

  WHERE a.FirstName=b.FirstName AND a.LastName=b.Last_Name

)

EXISTS 会帮助你...


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 436 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信