MySQL:选择问题

时间:2014-12-05 10:20:41

标签: mysql sql select join distinct

有两张桌子:

wes - contains 8000 rows, with 2000 distinct masternames (mastername is a column in wes)
wem - contains 2100 rows, with 2100 distinct names (name is a column in wem)

我试图获取wem中存在的名称,但不是wes中的masternames:

SELECT name FROM wem WHERE name NOT IN (SELECT DISTINCT mastername FROM wes)

但是出于某种原因,我的查询并没有返回任何行,即使在wem中有大约100个名字并不作为wes中的主要名称存在。

关于出了什么问题的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:1)

您确定子选择中没有NULLS吗?

尝试SELECT mastername FROM wes WHERE mastername IS NULL

如果有,您的查询将返回0 rwows。

调整为:

SELECT NAME FROM wem
WHERE NAME NOT IN (SELECT mastername FROM wes WHERE mastername IS NOT NULL)

答案 1 :(得分:0)

我经常避免在这种情况下使用NOT IN;尝试以下查询:

SELECT NAME
FROM   wem a
WHERE  NOT EXISTS(SELECT 1
                  FROM   wes b
                  WHERE  a.name = b.mastername)