我是一个SQL新手,我陷入了一个非常简单的任务。
图像比文字好,所以这是我的表格样本:
我想检索属于第27组和第16组的每个不同的product_id,例如。
所以我提出了这个请求:
SELECT DISTINCT product_id FROM my_table WHERE group_id = 27 AND group_id = 16
这不起作用,我理解为什么,但我不知道如何做不同......
我知道这是一个非常无聊的问题,但我不知道在这种情况下使用什么,INNER JOIN,LEFT JOIN ......
答案 0 :(得分:2)
您可以使用EXISTS
:
SELECT DISTINCT m1.product_id
FROM my_table m1
WHERE m1.group_id = 27
AND EXISTS (SELECT 1
FROM my_table m2
WHERE m1.product_id = m2.product_id
AND m2.group_id = 16);
答案 1 :(得分:2)
你可以这样做
SELECT product_id FROM my_table WHERE group_id in(27,16)
group by product_id
having count(DISTINCT group_id) >= 2
答案 2 :(得分:1)
尝试此查询
SELECT product_id, GROUP_CONCAT(group_id ORDER BY group_id) As groups
FROM my_table
GROUP BY product_id
HAVING
FIND_IN_SET('27', groups)
AND FIND_IN_SET('16', groups)
答案 3 :(得分:0)
尝试这个
SELECT DISTINCT product_id FROM my_table WHERE group_id IN(27,16)