让我们说我们有2张桌子:
table0:| colA | colB |
表1:| colA | colB |
我希望表之间的colB相同的表之间的colA条目不同。这是我正在使用的查询:
SELECT table0.colA FROM table0, table1 WHERE table0.colB = table1.colB AND (table0.colA) <> (table1.colA)
这似乎有效。但是,如果我在两个表中的colA值都为空,该怎么办?
如果colA中一个表的条目为空而不是另一个表的条目,我想认为这是有区别的。
如果colA中两个表的两个条目都为空,则我想这是有区别的。
我该如何检查?我尝试使用isNULL功能,但是当两个条目均为null时,该功能无法正常工作。
答案 0 :(得分:1)
当 table0.colA为null或table1.colA为null时,此查询将不选择任何行。 (我不再记得这种解释;随着时间的流逝,它已成为“事实”)。您可以使用SELECT这样的
看到它SELECT table0.colA, table1.colA,
CASE when table0.colA <> table1.colA then "true" else "false" END result
您需要使用OR条件,例如
WHERE table0.colB = table1.colB
AND (table0.colA <> table1.colA OR table0.colA is null OR table1.colA is null)
()
很重要,以免第一个WHERE子句被“忽略”。我对SQLite3的ISNULL
功能不熟悉。