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

Sql 返回表中不存在或不等于某个值的值,sql,join,Sql,Join,我有两个表(SQL)实体附件EA和UnitInventory UI。UI.StockNumber可以包含存储在EntityAttachment表中的附件(文档) 我试图找出哪个Distinct UI.StockNumber在EA表中根本没有条目(意味着没有文档),并将该列表与Distinct UI.StockNumber合并,后者有条目但没有EA.Extension='jpg'。所以,实际上,我正在寻找没有扩展名='jpg'的UI.StockNumber UI.UnitInventoryID=E

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

我试图找出哪个Distinct UI.StockNumber在EA表中根本没有条目(意味着没有文档),并将该列表与Distinct UI.StockNumber合并,后者有条目但没有EA.Extension='jpg'。所以,实际上,我正在寻找没有扩展名='jpg'的UI.StockNumber

UI.UnitInventoryID=EA.EntityID

连接这两个表并过滤掉EA.Extensions='jpg'很容易,但是我错过了EA表中根本不存在的那些。我迷路了,已经尝试太久了。我还能够返回所有的空值(EA表中根本不存在的值),但是我缺少了扩展名为pdf、xls等但没有jpg的值


这些信息是否足够有用?我正在努力解决这个问题。

您可以使用以下查询:

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

选择不同的ui.stocknumber
来自unitinventory ui
左连接实体附件ea
在ea.entityid=ui.unitinventoryid上
其中ea.extension为NULL
或ea.extension'jpg';

选项2本应是我的方法。它们有效,但现在我需要加入另一个表以筛选出活动的单位和某些类型的单位。在哪里添加此层?该表是UnitMaster UM on UM。[股票编号]=ui。[股票编号]。@JordonGriffith如果您需要其他请求,我想您可能需要发布其他问题。记住添加表结构、示例数据和预期输出,并解释如何实现该结果。(在您的评论中,我认为您可能只是需要添加一个内部连接,或者可能比这更复杂?)。无论如何,如果我的问题适用于你的第一个问题,请你将其标记为答案,供其他人参考。
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';