标题可能不是我需要的描述。我有一个包含product_id和store_id列的表。我需要一种方法来获得所有具有product_ids集合的商店(store_id)(他们需要拥有我想要的所有产品)。例如:
+------------+----------+
| product_id | store_id |
+------------+----------+
| 10 | 1 |
| 20 | 1 |
| 10 | 2 |
| 20 | 2 |
| 30 | 1 |
| 30 | 3 |
| 20 | 3 |
+------------+----------+
我想选择所有包含产品10,20和30(所有商品)的商店。 在此示例中,只有商店1包含所有3个产品。其他两个商店(2和3)只有两个产品,而不是全部3个。
我想构建一个只返回所有库存产品的store_id的查询。 我正在尝试这样的事情,但这在逻辑上并不完全是我需要的。
SELECT st.product_id, GROUP_CONCAT(DISTINCT st.store_id SEPARATOR ",")
AS store_ids
FROM stock_table AS st
WHERE st.product_id IN (10,20,30)
GROUP BY st.product_id
答案 0 :(得分:0)
您可以检查product_id的计数是否为3
SELECT st.product_id, GROUP_CONCAT(DISTINCT st.store_id SEPARATOR ",") AS store_ids store
FROM stock_table AS st
WHERE st.product_id IN (10,20,30)
GROUP BY store
having count(distinct st.product_id) = 3
这是原始答案
SELECT st.product_id, GROUP_CONCAT(DISTINCT st.store_id SEPARATOR ",") store
AS store_ids
FROM stock_table AS st
WHERE st.product_id IN (10,20,30)
GROUP BY store
having count(distinct product_id) = 3