我有一個從不同表中選擇的查詢,然后使用 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表和非空表?
PS 我正在使用 SQLite。
uj5u.com熱心網友回復:
嘗試NOT EXISTS:
WHERE NOT EXISTS (
SELECT 1
FROM allRelated
WHERE allRelated.NumID = allItems.NumID
AND allRelated.RelatedNumID = allItems.NumID
)
或者,WHERE將LEFT連接子句中的條件更改為IS NULL:
LEFT JOIN allRelated
ON allItems.NumID = allRelated.NumID AND allRelated.RelatedNumID = allItems.NumID
WHERE allRelated.NumID IS NULL
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403610.html
標籤:
