我正在尝试编写一个查询,其中给定一个列名称为(例如)“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/