簡體   English   中英

如何在MySQL中使用空外鍵查找所有結果?

[英]How can I find all results with a null foreign key in MySQL?

我有2張桌子... MySQL中的meatpotatoes

meat_id對於主鍵meat表並有一個meat_idpotatoes鏈接的2代表的表。 我想在potatoes表中查找所有沒有有效的meat_id 有任何想法嗎?

使用LEFT JOIN / IS NULL:

   SELECT p.*
     FROM POTATOES p
LEFT JOIN MEAT m ON m.meat_id = p.meat_id
    WHERE m.meat_id IS NULL

使用不存在:

SELECT p.*
  FROM POTATOES p
 WHERE NOT EXISTS(SELECT NULL
                    FROM MEAT m
                   WHERE m.meat_id = p.meat_id)

使用NOT IN:

SELECT p.*
  FROM POTATOES p
 WHERE p.meat_id NOT IN (SELECT m.meat_id
                           FROM MEAT m)

摘要

如果聯接中比較的列不能為NULL,則LEFT JOIN / IS NULL是最佳性能選項 如果這些值可以為NULL ,則NOT EXISTS或NOT IN的性能最佳

 SELECT *
 FROM potatoes p
 WHERE NOT EXISTS (SELECT 1 from meat m where m.meat_id = p.meat_id)

進行左連接並使用具有:

SELECT p.potato_id, m.meat_id
FROM potatos p
LEFT JOIN meat m ON p.meat_id = m.meat_id
HAVING m.meat_id IS null

暫無
暫無

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

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