簡體   English   中英

MySQL:連接表中的IS NULL

[英]MySQL: IS NULL in joined tables

我的JOIN和IS NULL有一些困難..

基本上我想要做的是找到所有不屬於我指定的某些組類別ID的成員。

SELECT m.* FROM elvanto_members AS m
    LEFT JOIN elvanto_groups AS g ON g.deleted = 0
    LEFT JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id AND (gc.category_id = '1' OR gc.category_id = '2')
    WHERE gr.id IS NULL

有些成員完全不屬於任何類別,這就是為什么我把它作為LEFT JOIN。

我有道理嗎? 你知道如何解決這個問題嗎?

嘗試這個:

SELECT m.* FROM elvanto_members AS m
WHERE 
  not exists 
  (
    SELECT 1 FROM 
     elvanto_groups AS g 
      INNER JOIN elvanto_groups_categories AS gc ON 
        gc.group_id = g.id
    WHERE
     gc.category_id IN ('1','2') AND
     g.id = m.group_id AND
     g.deleted = 0
  )
SELECT m.*
FROM   elvanto_members AS m
LEFT   JOIN elvanto_groups AS g ON g.id = m.group_id AND g.deleted = 0
LEFT   JOIN elvanto_groups_categories AS gc ON gc.group_id = g.id
                                           AND gc.category_id IN ('1','2')
WHERE  gc.group_id IS NULL
GROUP  BY m.*

我填寫了問題中遺漏的內容。
category_id真的是一個字符串類型嗎? 我希望它是數字的。 然后這個表達式應該是:

 AND gc.category_id IN (1,2)

暫無
暫無

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

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