gpt4 book ai didi

sql - 多对多查询

转载 作者:行者123 更新时间:2023-11-29 01:15:22 24 4
gpt4 key购买 nike

我有两个表 products 和 sections 是多对多关系,还有一个连接表 products_sections。一种产品可以分为一个或多个部分(新的、汽车的、飞机的、旧的)。

Products
id name
-----------------
1 something
2 something_else
3 other_thing


Sections
id name
-----------------
1 new
2 car

Products_sections
product_id section_id
--------------------------
1 1
1 2
2 1
3 2

我想提取新品和汽车部分的所有产品。在此示例中,返回的结果应为产品 1。获取此结果的正确 mysql 查询是什么?

最佳答案

SELECT Products.name
FROM Products
WHERE NOT EXISTS (
SELECT id
FROM Sections
WHERE name IN ('new','car')
AND NOT EXISTS (
SELECT *
FROM Products_sections
WHERE Products_sections.section_id = Sections.id
AND Products_sections.product_id = Products.id
)
)

换句话说,从该产品的 Products_sections 表中选择那些没有缺少所需 Section.id 值的产品。

回答andho的评论:

你可以放

  NOT EXISTS (<select query>)

像任何其他谓词一样进入 WHERE 子句。如果

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com