我正在尝试从数据库中获取一些数据。我Taak有一个可能的idPartij列的表。可能,因为它可以是真实的idPartij,但也可以是null。
我得到的查询:
SELECT T.idTaak,
T.Taaktype,
P.Partijnaam,
T.Naar,
T.UltimatumDatum,
T.Opmerking,
T.Status,
T.Prioriteit
FROM Taak AS T,
Partij AS P
WHERE T.idPartij = P.idPartij
ORDER BY idTaak DESC
Run Code Online (Sandbox Code Playgroud)
当我有一个 id 时T.idPartij,这工作正常,但如前所述,该 id 可以是null. 在这种情况下,该行将不会出现在结果中。
唯一的问题:当我删除 where 子句时,我得到了很多行(因为Partij表不再被过滤......
我对 SQL 完全是个菜鸟,所以我想不出“解决”这个问题的方法。我唯一能想到的是创建 2 个查询,但我认为这不是一个好方法...
由于您正在尝试链接两个表,因此您应该使用 aLEFT OUTER JOIN来代替:
SELECT T.idTaak,
T.Taaktype,
P.Partijnaam,
T.Naar,
T.UltimatumDatum,
T.Opmerking,
T.Status,
T.Prioriteit
FROM Taak AS T LEFT OUTER JOIN Partij AS P
ON T.idPartij = P.idPartij
ORDER BY idTaak DESC
Run Code Online (Sandbox Code Playgroud)
如果您不想包含这些NULL值,请改用 an INNER JOIN。
请注意,您不应该使用这些旧式连接,踢.
根据NULL问题:
你不能使用= NULLor<> NULL因为NULL不等于或不等于任何东西。NULL意味着未知。
所以使用IS NULL或IS NOT NULL:
WHERE T.idPartij IS NULL OR T.idPartij = P.idPartij
Run Code Online (Sandbox Code Playgroud)
来自MSDN
NULL 值表示该值未知。NULL 值不同于空值或零值。没有两个空值是相等的。两个空值之间或 NULL 与任何其他值之间的比较返回未知,因为每个 NULL 的值都是未知的。
| 归档时间: |
|
| 查看次数: |
3762 次 |
| 最近记录: |