MySQL仅按所有匹配where子句的值分组
我需要得到一个数字列表,其中所有finished=1的行。 例如,正确的列表如下:2,5MySQL仅按所有匹配where子句的值分组,mysql,Mysql,我需要得到一个数字列表,其中所有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
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,因为一行将匹配,但当一个数字的所有行都匹配时,我只需要数字
//编辑
答案中的代码运行良好,但现在我遇到了一个新问题,但几乎相同。
现在,我想通过两列来过滤什么
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和fixed=1
SELECT number WHERE finished = 1 GROUP BY number having count(number) = sum(finished)
像这样的事我没听懂
SELECT number WHERE finished = 1 GROUP BY number having count(number) = sum(finished)
您要做的是选择至少有一个已完成的所有数字=1 如果您想要全部,您需要使用以下内容:
SELECT distinct number FROM myTable WHERE finished = 1 and number not in
(select number FROM myTable where finished <> 1)
您要做的是选择至少有一个已完成的所有数字=1 如果您想要全部,您需要使用以下内容:
SELECT distinct number FROM myTable WHERE finished = 1 and number not in
(select number FROM myTable where finished <> 1)
您可以像这样使用聚合:
SELECT number
FROM yourTable
GROUP BY number
HAVING MIN(finished) = 1
我假设finished只能是0或1。您可以像这样使用聚合:
SELECT number
FROM yourTable
GROUP BY number
HAVING MIN(finished) = 1
我假设finished只能是0或1。为什么是maxnumber?他想在所有的数字都完成的地方得到所有的数字,max和它有什么关系?既然你有分组数字,MAXnumber和number是一样的。为什么MAXnumber?他想得到所有的数字,所有的数字都完成了,max和它有什么关系?因为你有分组数字,MAXnumber和数字是一样的。这是目前为止最聪明的方法。很好。这是一个巨大的帮助,经过几天的探索如何做类似的事情,一旦我看到了,这是显而易见的!这是迄今为止最聪明的方法。很好。这是一个巨大的帮助,经过几天的探索如何做类似的事情,一旦我看到了,这是显而易见的!