【发布时间】:2016-11-14 16:46:33
【问题描述】:
我有一个查询,我试图获取它们不在另一个表中的特定值,但是当我运行查询时,我没有得到任何结果。这就是我所看到的。请让我知道出了什么问题。
原始查询:返回 399 行
USE TFW_DEV
SELECT
unitid, unitnumber
FROM
Units
WHERE
createdon BETWEEN '2016-11-01 00:00:00' AND '2016-11-03 23:59:59'
ORDER BY
unitnumber
查询表共享数据的位置:返回 50 行
USE TFW_DEV
SELECT
unitid, unitnumber
FROM
Units
WHERE
createdon BETWEEN '2016-11-01 00:00:00' AND '2016-11-03 23:59:59'
AND unitid IN
(
SELECT
unitid
FROM
meteraudit
)
ORDER BY
unitnumber
使用 NOT IN 的最终查询:返回 0 行
USE TFW_DEV
SELECT
unitid, unitnumber
FROM
Units
WHERE
createdon BETWEEN '2016-11-01 00:00:00' AND '2016-11-03 23:59:59'
AND unitid NOT IN
(
SELECT
unitid
FROM
meteraudit
)
ORDER BY
unitnumber
我希望最终查询正确返回 349 行?如果不是我做错了什么?谢谢,
【问题讨论】:
-
meteraudit中的unitid是否有任何NULL值? -
有几行是空的。
-
那就是问题所在。对于这两个查询,您需要使用
IN /* or NOT IN */ (SELECT unitid FROM meteraudit WHERE unitid IS NOT NULL) -
是的,做到了。谢谢你。将您的评论放入答案中,以便我为您标记。谢谢。
标签: sql-server tsql notin