mysql - 当 Mysql 中的 select 查询中使用 GROUP BY 子句时,增量值不是按顺序排列的

标签 mysql

当我使用 Group by caluse 或连接表时,SEQ_NO 值不是按顺序排列的。即使我对另一列使用 ORDER BY 子句,SEQ_NO 也应该按顺序排列。

set @S = 0; 
SELECT (@S:=@S+1) AS SEQ_NO, abc, def 
from table 
group by abc 
order by abc

最佳答案

从 MySQL 8.0 开始,您可以使用 ROW_NUMBER:

SELECT ROW_NUMBER() OVER (ORDER BY numValue) AS SEQ_NO, abc, def
FROM table_name
GROUP BY abc
ORDER BY abc

demo on dbfiddle.uk

如果您使用 MySQL 8.0 之前的版本,则必须使用子查询:

SELECT (@S:=@S+1) AS SEQ_NO, t.* 
FROM (
  SELECT abc, def
  FROM table_name
  GROUP BY abc
  ORDER BY abc
) t, (SELECT @S:=0) sn

demo on dbfiddle.uk

您还可以GROUP BY abc,但也在结果中使用def列。在本例中,def 列是非聚合列,因此如果启用 ONLY_FULL_GROUP_BY,则查询无效。

关于mysql - 当 Mysql 中的 select 查询中使用 GROUP BY 子句时,增量值不是按顺序排列的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57607981/

相关文章:

mysql - 在我的 JOIN 语句中使用 MySQL 多列索引

mysql - Spring Bcrypt 是无状态的,不需要安全随机数?

php - Jquery PHP mySQL ajax 方法将数据同步到两个客户端?

php - MYSQL - 如何用相同的值替换为?

php - 从 foreach 循环中的数组中提取数据库行

php - 多次在 SQL 表上添加值

关于UPDATE的Mysql问题

mysql - 在 linux 文件系统上索引文件的 Ruby 进程

mysql - 使用连接更新列

php - mysql插入值选择不存在