gpt4 book ai didi

mysql - 如何选择符合连接表中定义条件的记录?

转载 作者:行者123 更新时间:2023-11-29 04:30:29 25 4
gpt4 key购买 nike

我有这三个表:

products TABLE:
id:integer
name:string

features TABLE:
id:integer
name:string

features_products TABLE:
product_id:integer
feature_id:integer

features_products TABLE 告诉我每个产品有哪些功能。例如:

product_id feature_id
1 3
1 5
3 4

告诉我产品 1 具有功能 3 和 5,产品 3 具有功能 4,而且产品 2(如果存在)没有功能。

我的问题是,如何从产品表中SELECT所有具有确定特征的产品?例如,选择具有特征 3 和 5 的产品,或选择具有特征 2 的产品

最佳答案

为同时具有特征 3 和 5 的产品选择所有产品 ID:

SELECT product_id
FROM features_products
WHERE feature_id IN (3, 5)
GROUP BY product_id
HAVING COUNT(*) = 2

这假设 (product_id, feature_id) 存在唯一性约束。如果您想要产品表中的整行,请在子查询中使用它:

SELECT *
FROM products
WHERE product_id IN (
SELECT product_id
FROM features_products
WHERE feature_id IN (3, 5)
GROUP BY product_id
HAVING COUNT(*) = 2
)

关于mysql - 如何选择符合连接表中定义条件的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3181565/

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