在存在NULL条目的地方获取不相等的条目



假设我们有两个表:

表0:|colA|colB|

表1:|colA|colB|

我想要表之间不同的colA条目,其中表之间的colB相同。这是我正在使用的查询:

SELECT table0.colA FROM table0, table1 WHERE table0.colB = table1.colB AND (table0.colA) <> (table1.colA)

这似乎奏效了。但是,如果我在两个表中都有colA的空值,该怎么办?

  • 如果colA中一个表的条目为null,而不是另一个表,我认为这是一个区别。

  • 如果两个表的colA中的两个条目都为null,我认为这是一个区别。

如何检查?我尝试使用ISNULL功能,但当两个条目都为null时,该功能无法正常工作。

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功能。

最新更新