返回表中不存在的值或不等于值

时间:2017-03-09 14:11:29

标签: sql join

我有2个表(SQL)EntityAttachment EA和UnitInventory UI。 UI.StockNumber可以包含存储在EntityAttachment表中的附件(文档)。

我试图找出哪个Distinct UI.StockNumber根本没有EA表中的条目(意味着没有文档),并将该列表与具有条目但没有EA.Extension ='的Distinct UI.StockNumber结合起来。 JPG”。所以,我正在寻找没有extension ='jpg'的UI.StockNumber。

UI.UnitInventoryID = EA.EntityID

很容易加入这两个表并过滤掉EA.Extensions ='jpg',但后来我想念EA表中根本不存在的那些。我迷失了,并且已经尝试了很长时间。我还能够返回所有NULL值(EA表中根本不存在的值),但后来我错过了那些扩展为pdf,xls等但不是jpg的值。

这有足够的信息可以提供帮助吗?我正在努力解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以使用此查询:

SELECT DISTINCT ui.stocknumber
FROM unitinventory ui
WHERE NOT EXISTS (
    SELECT 1 
    FROM entityattachment
    WHERE entityid = ui.unitinventoryid 
        AND extension = 'jpg'
    );

或者:

SELECT DISTINCT ui.stocknumber
FROM unitinventory ui
LEFT JOIN entityattachment ea
ON ea.entityid = ui.unitinventoryid 
WHERE ea.extension IS NULL
    OR ea.extension <> 'jpg';