[英]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.