如何在MySQL查询结果中显示序号

问题描述 投票:0回答:5

我有一些简单的疑问:

SELECT foo, bar FROM table

我想你现在的结果是什么样的。

我想要做的是根据查询结果中出现的数据数量来显示一些顺序数字。就像

AUTO_INCREMENT
一样(这并不意味着我想出示ID)。 我想要的结果是这样的:

|No|   foo   |    bar   |
-------------------------
|1 |   bla   |    123   |
|2 |   boo   |    abc   |
|3 |   wow   |    xxx   |

我该怎么做才能成功?

提前致谢

mysql select
5个回答
49
投票
select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;

12
投票

如果您在查询中使用

GROUP BY
子句,订单会被打乱。解决方法是将您的查询放入
FROM
子句中,如下所示。

SET @a:=0;
SELECT @a:=@a+1 No, output.*
FROM (
     SELECT foo, bar
     FROM table GROUP BY foo, bar
 ) output;

9
投票

这两个答案都不适合我,但是根据 bungditosource,我意识到你可以做一些更简单的事情:

SET @a:=0;
SELECT @a:=@a+1 No, foo, bar
FROM table;

因此,首先确保

SET @a:=0;
运行。这将设置你的变量,a。然后您可以使用
@a:=@a+1
在结果中增加它。我用 GROUP BY、ORDER BY、甚至 JOINS 对此进行了测试,它按预期工作。


0
投票

如果有人想在排序记录后显示行号,这样的方法可能会起作用

set @a=0; 
select @a:=@a+1 serial_number,t.* 
from ( SELECT foo, bar FROM tableORDER BY bar ) t

0
投票

我认为最好的实现方式是:

select my_column, row_number() over (order by my_column) as No from my_table
© www.soinside.com 2019 - 2024. All rights reserved.