我正在尝试编写一个查询,其中给定一个列名称为(例如)“Likes”的用户表,我要为“Likes”列选择所有记录为0和1的用户。架构如下所示:

id  Name  Likes
0   Tom   1
1   Alice 0
2   Tom   0

查询应返回id=0和id=2的行,因为Tom对于Like列同时具有1和0。完成这种行为最简单/最有效的查询是什么?

最佳答案

假设您的表名为tab,则可以使用:

SELECT *
  FROM tab a
 WHERE (SELECT count(distinct b.likes)
         FROM tab b
        WHERE a.name = b.name
          AND b.likes in(0, 1)
       ) = 2

这可以很容易地扩展到任何数量的不同的喜欢,是必需的。只需在IN子句中枚举它们,并将子选择与值的数目进行比较。

关于mysql - 查询以根据列条件返回行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21320212/

10-11 04:46