Mysql选择除了另一个表中的行之外的所有行

时间:2012-12-05 01:34:10

标签: mysql

  

可能重复:
  Need SQL Query to find Parent records without child records

我有一张桌子和第二张,

select name from one

假设我有3行a,b,c

select name from table two;

并且假设我在表2中有3行,其中包含a,d,f

我想select * from table one名字不在表2中,所以我最终应该这样做 b,c而不是a因为a在表2中

请建议谢谢

2 个答案:

答案 0 :(得分:3)

您可以创建一个子查询来获取表二中的名称,并使用它们从表一中排除行

SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2)

答案 1 :(得分:2)

使用NOT EXISTS子句

SELECT name from one
WHERE NOT EXISTS (
    SELECT 1 FROM two
    WHERE two.name = one.name
)

更新

或者,您可以使用LEFT JOIN NULL限定符

SELECT one.name FROM one
LEFT JOIN two on one.name = two.name
WHERE two.name IS NULL