嗨,我有一张看起来像这样的表
id : productid : featureid
(1, 1, 16)
(2, 1, 21)
(3, 1, 25)
(4, 2, 16)
(5, 2, 21)
(6, 2, 27)
其中featureid是另一个表的外键。
我需要选择同时具有16和25个featureid的产品,在示例中,这将是productid 1
但不是productid 2
。
有人可以向我展示如何格式化此查询的示例吗?
答案 0 :(得分:2)
要获取具有这两种功能的所有产品,您可以使用子查询,然后使用Group By
和Having
- 子句仅返回具有这两种功能的产品(假设{{ 1}}在您的表中是唯一的。)
productId, featureId
答案 1 :(得分:1)
我不明白关于“productid 1而非productid 2”的最后陈述。
我没有测试过这段代码,但您可以这样做:
SELECT a.* FROM `products` AS a INNER JOIN `products` AS b ON ( a.`productid` = b.`product_id` WHERE `featureid` = 25 ) WHERE a.`featureid` = 16
或
SELECT * FROM `products` WHERE `featureid` = 16 AND `product_id` IN ( SELECT `productid`FROM `products` WHERE `featureid` = 25 )