我有一些简单的疑问:
SELECT foo, bar FROM table
我想你现在的结果是什么样的。
我想要做的是根据查询结果中出现的数据数量来显示一些顺序数字。就像
AUTO_INCREMENT
一样(这并不意味着我想出示ID)。
我想要的结果是这样的:
|No| foo | bar |
-------------------------
|1 | bla | 123 |
|2 | boo | abc |
|3 | wow | xxx |
我该怎么做才能成功?
提前致谢
select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;
如果您在查询中使用
GROUP BY
子句,订单会被打乱。解决方法是将您的查询放入 FROM
子句中,如下所示。
SET @a:=0;
SELECT @a:=@a+1 No, output.*
FROM (
SELECT foo, bar
FROM table GROUP BY foo, bar
) output;
如果有人想在排序记录后显示行号,这样的方法可能会起作用
set @a=0;
select @a:=@a+1 serial_number,t.*
from ( SELECT foo, bar FROM tableORDER BY bar ) t
我认为最好的实现方式是:
select my_column, row_number() over (order by my_column) as No from my_table