mysql一对多反连接查询

olqngx59  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(450)

正在查找有关此情况的查询的帮助:
我有三张table。鞋桌是一个独特的鞋模型集合。颜色表是一个独特的收集颜色的鞋子可以。鞋子颜色表是一个连接表。一个鞋款可以有多种颜色,也可以只有一种。
我想查询不包含特定颜色的鞋模型。举个例子。。。 Shoe 1 有颜色吗 black , red , white . Shoe 2 有颜色吗 black , white . Shoe 3 有颜色吗 black , white . 的查询不包含颜色 red 应返回行: Shoe 2 以及 Shoe 3 .
感谢您的帮助,如有任何问题请澄清!

eqfvzcg8

eqfvzcg81#

你可以用 not exists .
假设联接表通过主键引用其他表(比如 color_id 以及 shoe_id ),以及该列 color_name 在表中 color 存储颜色名称,您可以:

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'
)

相关问题