嗨,我有一个小问题,我找不到解决方案。我在 MySql 中很新。
假设我有这个表:
_______________
|prodID| |propID|
|________|______|
| 1 | 2 |
| 1 | 5 |
| 2 | 6 |
| 2 | 7 |
| 3 | 5 |
| 3 | 2 |
| 3 | 9 |
| 4 | 5 |
| 4 | 3 |
| 5 | 2 |
| 5 | 5 |
|________|______|
prodID 是产品 ID,propID 是属性 ID。
现在我想获取例如具有 propID=2 属性的产品
以及 propID=5 的属性。 propID=2 中的属性是“由玻璃制成”,propID=5 是“ child 安全”。我希望我得到的产品 (prodID) 都是。 “由玻璃制成,对 child 安全”。所以我得到的 propID 是 1,3 和 5。
这对我不起作用:
SELECT prodID FROM table WHERE propID=2 AND propID=5
我希望我的意思很清楚,希望有人能帮助我。
谢谢
编辑:
表现在在 prodID=4 处更改。
如果我尝试
SELECT prodID FROM table WHERE propID=2 OR propID=5
我会得到 1、3、4 和 5。但这不是我想要的。
最佳答案
您需要的查询是:
SELECT
prodID
FROM
t
WHERE
propID IN (2,5)
GROUP BY
prodID
HAVING
COUNT(DISTINCT propID)=2
另外,请注意,它是“恰好 2 个属性”。如果结果中需要“属性中至少有 '2' 和 '5'”,则将
COUNT(DISTINCT propID)=2
更改为 COUNT(DISTINCT propID)>=2
。检查这个 fiddle 。关于php - MySQL 查询中的 WHERE 和 AND,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24939887/