[英]mysql one-to-many anti join query
尋求有關此情況查詢的幫助:
我有 3 張桌子。 鞋桌是鞋款的獨特集合。 色表是一款獨特的colors系列鞋款。 shoe_color 表是一個連接表。 一只鞋 model 可以有多個 colors 或只有一個。
我想查詢不包含特定顏色的鞋款。 例如... Shoe 1
有 colors black
, red
, white
。 Shoe 2
有 colors black
, white
。 Shoe 3
有 colors black
, white
。 不包含red
的查詢應返回以下行: Shoe 2
和Shoe 3
。
任何幫助表示贊賞,請提出任何問題以進行澄清!
你可以使用not exists
。
假設連接表通過它們的主鍵(比如color_id
和shoe_id
)引用其他表,並且表color
中的列color_name
存儲顏色名稱,您將 go:
select s.*
from shoe s
where not exists (
select 1
from shoe_color sc
inner join color c on c.color_id = sc.color_id
where sc.shoe_id = s.shoe_id and c.color_name = 'red'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.