MySQL选择帮助

时间:2010-05-19 06:15:05

标签: sql mysql

嗨,我有一张看起来像这样的表

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

有人可以向我展示如何格式化此查询的示例吗?

2 个答案:

答案 0 :(得分:2)

要获取具有这两种功能的所有产品,您可以使用子查询,然后使用Group ByHaving - 子句仅返回具有这两种功能的产品(假设{{ 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 )