当我使用 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
如果您使用 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
您还可以GROUP BY abc
,但也在结果中使用def
列。在本例中,def
列是非聚合列,因此如果启用 ONLY_FULL_GROUP_BY
,则查询无效。
关于mysql - 当 Mysql 中的 select 查询中使用 GROUP BY 子句时,增量值不是按顺序排列的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57607981/