嗨,我有一点问题,我找不到解决方案.我在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是Product-ID,propID是Property-ID.
现在我想获得例如具有propID = 2的属性的Products
和propID = 5的属性.如果propID = 2中的属性是“由玻璃制成”而propID = 5则是“对儿童安全”.我希望我得到的产品(prodID)都是. “由玻璃制成,对儿童安全”.所以我得到的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,product,select,where
来源: https://codeday.me/bug/20190825/1714417.html