簡體   English   中英

從一個表中返回的值不存在於另一個表中

[英]Return Values From One Table That Don't Exist In Another

我有兩張桌子,一張:

INSERT INTO `fictional_companies` (`ID`, `name`)
VALUES
    (8209948, 'Moulon Rouge LTD'),
    (11399177, 'Burgers Burgers Burgers LTD');

和兩個:

INSERT INTO `processed` (`ID`)
VALUES
    ('8209948');

我想從fictional_companies表中返回結果,但前提是processed表中不存在這些結果。

在示例情況下,結果如下:

(11399177, 'Burgers Burgers Burgers LTD')

根據右側表上與IS NULL檢查的正確關系建立的LEFT JOIN ,將獲得與右側表不匹配的那些行

SELECT fc.*
FROM fictional_companies AS fc
LEFT JOIN processed AS p ON p.ID = fc.ID
WHERE p.ID IS NULL

使用不存在相關子查詢的另一種方法是可能的

SELECT fc.*
FROM fictional_companies AS fc
WHERE NOT EXISTS (SELECT 1 FROM processed AS p 
                  WHERE p.ID = fc.ID)

使用左連接並檢查右表中的空值僅在其中選取這些值

select t1.* from fictional_companies  t1 
left join processed t2 
on t1.ID=t2.ID
where t2.id is null

使用NOT IN

SELECT * FROM `fictional_companies` WHERE `ID` NOT IN (SELECT `ID` FROM `processed`)

我相信代碼很容易理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM