【发布时间】:2022-01-04 14:08:02
【问题描述】:
我有一个从不同表中选择的查询,然后使用 WHERE 子句过滤项目。 该子句如下所示:
WHERE allItems.NumID != (SELECT RelatedNumID FROM allRelated WHERE NumID = allItems.NumID)
当allRelated 表不为空时,这可以正常工作。
但是当它为空时,我从查询中得到 0 个结果。
我尝试使用NOT IN 代替!=。 allRelated 为空时返回结果,allRelated 不为空时不过滤结果:
WHERE allItems.NumID NOT IN (SELECT RelatedNumID FROM allRelated WHERE NumID = allItems.NumID)
我也尝试加入表格,但得到的结果与 NOT IN 相同:
LEFT JOIN allRelated ON allItems.NumID = allRelated.NumID
WHERE allRelated.NumID IS NOT NULL
我应该如何编写查询以使其同时适用于空和非空allRelated 表?
附:我正在使用 SQLite。
【问题讨论】:
标签: sql sqlite left-join where-clause exists