什么不存在多个条件

Ger*_*rry 1 sql ms-access

如何设置多个AND条件?恩.

SELECT *
FROM CONFIRMED
WHERE NOT EXISTS 
( 
    SELECT * 
    FROM Import_Orders
    WHERE Import_Orders.Customer = CONFIRMED.Customer
        AND Import_Orders.Reference = CONFIRMED.Reference
        AND Import_Orders.[Index] = CONFIRMED.[Index]  
        AND Import_Orders.QuantityToDeliver = CONFIRMED.QuantityToDeliver  
        AND Import_Orders.DateToDeliver = CONFIRMED.DateToDeliver  

);
Run Code Online (Sandbox Code Playgroud)

我知道这可以在我的表上使用一个WHERE&AND条件而不是几个.

我需要两个表的结果,其中上述条件不匹配.我在两个表中没有相同的键.现在有了这段代码,我得到了表CONFIRMED中的所有结果.

Jir*_*ika 5

以下是多个表的语法:

WHERE NOT EXISTS (...) AND NOT EXISTS (...) AND NOT EXISTS (...)
Run Code Online (Sandbox Code Playgroud)

但是,如果数据库太大而无法关注性能,那么在以下几行中您需要一个不那么明显的语法:

LEFT JOIN Some_Table t ON (t.xxx = Main_Table.xxx)
LEFT JOIN Another_Table t2 ON (t2.xxx = Main_Table.xxx)
LEFT JOIN Yet_Another_Table t3 ON (t3.xxx = Main_Table.xxx)
...
WHERE t.id IS NULL AND t2.id IS NULL AND t3.id IS NULL
Run Code Online (Sandbox Code Playgroud)

对于一个表和一个组合条件,如问题中的SQL示例:

LEFT JOIN Some_Table t ON
        t.xxx = Main_Table.xxx
    AND t.yyy = Main_Table.yyy
    AND t.zzz = Main_Table.zzz
WHERE t.id IS NULL
Run Code Online (Sandbox Code Playgroud)

这应该返回Main_Table中存在但在Some_Table中没有匹配行的行,假设列xxx等不可为空.

例如,如果可以xxx为空,那么您需要进一步修改查询:

LEFT JOIN Some_Table t ON
        (t.xxx = Main_Table.xxx OR (t.xxx IS NULL AND Main_Table.xxx IS NULL))
    AND t.yyy = Main_Table.yyy
    AND t.zzz = Main_Table.zzz
WHERE t.id IS NULL
Run Code Online (Sandbox Code Playgroud)