MySQL:选择问题
Posted
技术标签:
【中文标题】MySQL:选择问题【英文标题】:MySQL: Select problems 【发布时间】:2015-02-03 11:46:32 【问题描述】:有两张桌子:
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 中不作为 masternames 存在。
对出了什么问题有任何想法吗?
谢谢!
【问题讨论】:
两个表中的列类型是什么? 列的排序规则是什么? 你的sql语句似乎是正确的。我认为您应该再次检查名称是否真的不在 wes 表中并且确实在 wem 表中提交。可能会发生一些事情,比如您向我们插入了新记录,没有提交,并且在不同的会话中您尝试了 SELECT 语句。 【参考方案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)
【讨论】:
不错。不知道。【参考方案2】:我通常避免在这种情况下使用NOT IN
;试试下面的查询:
SELECT NAME
FROM wem a
WHERE NOT EXISTS(SELECT 1
FROM wes b
WHERE a.name = b.mastername)
【讨论】:
以上是关于MySQL:选择问题的主要内容,如果未能解决你的问题,请参考以下文章