有人可以解释为什么最后一条语句没有列出所有位于#inv_item但不在salesMasterDET中的ST项目吗?我使用的是SQL 2008 R2WHERE xxx NOT IN ...不返回任何东西
如果我填充一个临时表: SELECT DISTINCT(产品代码)INTO #smd_item FROM salesMasterDET 我运行相同的选择,S1-S4但与临时表,一切工作正常。
S1:SELECT DISTINCT(项目)FROM #inv_item
S2:SELECT DISTINCT(产品代码)FROM salesMasterDET
S3:SELECT DISTINCT(项目)FROM #inv_item其中项目IN(SELECT的ProductCode FROM salesMasterDET)
S4:SELECT DISTINCT(项目)FROM #inv_item其中项目NOT IN(SELECT ProductCode与salesMasterDET)
结果:
S1:ST01 ST02 ST03 ST04 ST05 ST11 ST12
S2:ST04 ST12
S3:ST04 ST12
S4:(没有结果)(期望ST01,ST 02,,,ST11)
如果您运行查询'SELECT * FROM salesMasterDET WHERE ProductCode IS NULL'是否返回任何结果?如果是这样,那就是问题所在。与'NULL'相比,没有值会从'NOT IN'返回。您可以将查询更改为'SELECT DISTINCT(Item)FROM #inv_item其中,商品NOT IN(SELECT ProductCode FROM salesMasterDET WHERE ProductCode IS NOT NULL)' – 2015-03-03 03:40:38
我通常从这些表中删除空值,并没有考虑到它的结尾,但有空值。问题解决了。简单的答案和理由。谢谢阿德里安。 – user3651072 2015-03-03 20:25:21