Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL仅按所有匹配where子句的值分组_Mysql - Fatal编程技术网

MySQL仅按所有匹配where子句的值分组

MySQL仅按所有匹配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

我需要得到一个数字列表,其中所有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,因为一行将匹配,但当一个数字的所有行都匹配时,我只需要数字

//编辑

答案中的代码运行良好,但现在我遇到了一个新问题,但几乎相同。 现在,我想通过两列来过滤什么

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和数字是一样的。这是目前为止最聪明的方法。很好。这是一个巨大的帮助,经过几天的探索如何做类似的事情,一旦我看到了,这是显而易见的!这是迄今为止最聪明的方法。很好。这是一个巨大的帮助,经过几天的探索如何做类似的事情,一旦我看到了,这是显而易见的!