我需要获取所有 finished = 1 行的数字列表。 例如,正确的列表在这里:2,5
id | number | finished
-------------------------
0 | 1 | 0
1 | 2 | 1
2 | 2 | 1
3 | 3 | 0
4 | 3 | 1
5 | 3 | 1
6 | 4 | 1
7 | 4 | 0
8 | 4 | 0
9 | 5 | 1
这个查询不起作用:
SELECT numbers
WHERE finished = 1
GROUP BY number;
结果是 2,3,4,5
因为一行会匹配,但我只需要一个数字的所有行都匹配时的数字。
//编辑
答案中的代码运行良好,但现在我遇到了一个新的但几乎相同的问题。 现在我要按 2 列过滤
id | number | finished | fixed
-------------------------------
0 | 1 | 0 | 1
1 | 2 | 1 | 1
2 | 2 | 1 | 1
3 | 3 | 1 | 0
4 | 3 | 1 | 1
5 | 3 | 1 | 1
6 | 4 | 1 | 1
7 | 4 | 0 | 0
8 | 4 | 0 | 1
9 | 5 | 1 | 1
需要的结果是:number = 2,5
现在 where 子句必须是 WHERE finished = 1 AND fixed = 1
最佳答案
您可以像这样使用聚合:
SELECT number
FROM yourTable
GROUP BY number
HAVING MIN(finished) = 1
我假设 finished
只能是 0
或 1
。
关于MySQL GROUP BY 仅值全部匹配 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351334/