试试看这个
SELECT GOODS_ID
FROM (
SELECT GOODS_ID,GROUP_CONCAT(PROP_ID) AS PROP_ID
FROM GOODS_IDS_PROP_ID
GROUP BY GOODS_ID ) AS A
WHERE PROP_ID IN (
SELECT GROUP_CONCAT(PROP_ID)
FROM GOODS_IDS_PROP_ID
WHERE GOODS_ID = 1
GROUP BY GOODS_ID )
※ 引述《JYHuang (夏天到了,冷不起来了说)》之铭言:
: 抱歉不知道标题要如何下,DB是MYSQL。
: 假设有个table是商品,另一个是属性的关联表
: table:goods table:prop
: goods_id name prop_id name
: 1 商品A 1 USB3.0
: 2 商品B 2 HDMI
: 3 商品C
: table:goods_prop
: goods_id prop_id
: 1 1
: 1 2
: 2 1
: 3 1
: 3 2
: 我想要透过同时具有USB3跟HDMI的条件来饰选
: 或是选商品A时,列出属性"完全一样"的商品
: 我用的方法是
: SELECT `goods_id`
: FROM `goods_pro`
: WHERE `prop_id` IN (1,2)
: HAVING count(`goods_id`) >= 2
: 不过这样要用程式分开来取条件,不知是否还有其它的关联法呢?