Mysql 更新并选择最小/最大计数组

标签 mysql group-by sql-update max min

我有一个像这样的简单表格:

id  grouped  type_error
--  -------  ------------------ 
1   1-0      TL           
2   1-0      TL           
3   1-0      TL           
4   1-1      TL           
5   1-2      TL      
6   1-2      TL      
7   1-3      TL      
8   1-3      TL      
9   1-3      TL      
10  1-3      TL      

我只想将表格更新为这样:

id  grouped  type_error
--  -------  ------------------ 
1   1-0      FN           
2   1-0      FN           
3   1-0      FN           
4   1-1      TL           
5   1-2      TL      
6   1-2      TL      
7   1-3      FN      
8   1-3      FN      
9   1-3      FN      
10  1-3      FN      

我想更新分组计数最小 3 最大 5 的位置:

我只是有这样的查询:

update errorlog set type_error = 'FN' where id in
(select group_concat(id) as ids from errorlog where ids > 2 group by grouped)

但是,它不起作用。我收到错误

Unknown column 'ids' in 'where clause'

最佳答案

您可以使用以下解决方案,并进行子选择:

UPDATE errorlog SET type_error = 'FN'
WHERE grouped IN (
  SELECT * FROM (
    SELECT grouped 
    FROM errorlog 
    GROUP BY grouped 
    HAVING COUNT(id) BETWEEN 3 AND 5
  )x
);

Here you can find a working demo: http://sqlfiddle.com/#!9/311a01/1/0

关于Mysql 更新并选择最小/最大计数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41679794/

相关文章:

php - 替换表格中的换行符

Mysql 查询不工作

mysql 使用 select sum() 从另一个表更新一个表

MySQL - 根据连接表列值更新列值

mysql - 如何使用 ID 从 Sqlite 中删除一行,其中我的 ID 是二进制数据 (GUID)

mysql - If Contains 语句用于新变量 SQL

mysql - 安装 Vapor/MySQL 后无法不带参数调用类型 'posix_spawn_files_actions_t' 的初始值设定项

mysql - 如何在 MySQL 中对具有多个 HAVING 值的多个列进行 GROUP BY?

python - Pandas df 操作 : new column with list of values if other column rows repeated

mysql - 更新语句从其他表中扣除