【发布时间】:2016-05-14 08:35:47
【问题描述】:
当我从表 zvw_test 中选择所有行时,它返回 145 行。 表 Customer_Class_Price 有 160 行。 当我尝试以 2 个条件加入这 2 个表时,它返回 122 行。 我不明白为什么它不从 zvw_test 返回所有行(145 行) 因为我使用左外连接它应该返回左表中的所有行。
谢谢。
SELECT zvw_test.Goods_ID,
zvw_test.Thai_Name,
zvw_test.UM,
zvw_test.CBal,
Customer_Class_Price.ListPrice
FROM zvw_test
LEFT OUTER JOIN
Customer_Class_Price ON zvw_test.Goods_ID = Customer_Class_Price.Goods_ID AND
zvw_test.UM = Customer_Class_Price.UM
WHERE (Customer_Class_Price.ClassCode = '444-666')
【问题讨论】:
-
是因为
WHERE (Customer_Class_Price.ClassCode = '444-666')吗?你应该把它改成WHERE (Customer_Class_Price.ClassCode IS NULL OR Customer_Class_Price.ClassCode = '444-666') -
在我更改 where 子句后,它返回 138 行。仍然缺少 7 行。
-
必须有 7 行连接到既不是 '444-666' 也不是 NULL 的 ClassCode。
-
这就是为什么你应该将 where 条件移动到 join 子句
标签: sql sql-server sql-server-2008