MySQL:检查两行

时间:2015-10-01 10:03:14

标签: mysql sql

我是一个SQL新手,我陷入了一个非常简单的任务。

图像比文字好,所以这是我的表格样本:

我想检索属于第27组和第16组的每个不同的product_id,例如。

所以我提出了这个请求:

SELECT DISTINCT product_id FROM my_table WHERE group_id = 27 AND group_id = 16

这不起作用,我理解为什么,但我不知道如何做不同......

我知道这是一个非常无聊的问题,但我不知道在这种情况下使用什么,INNER JOIN,LEFT JOIN ......

4 个答案:

答案 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)