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

时间:2011-05-19 08:24:09

标签: mysql select

我有一些简单的查询:

SELECT foo, bar FROM table

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

我想要做的是根据查询结果中显示的数据显示一些序号。它就像AUTO_INCREMENT(这并不意味着我想要显示ID)。 结果我想要的是:

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

我该怎么做呢?

提前致谢

4 个答案:

答案 0 :(得分:29)

select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;

答案 1 :(得分:6)

如果在查询中使用GROUP BY子句,则订单会被扰乱。解决方法是将查询放在FROM子句中,如下所示。

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

答案 2 :(得分:4)

这两个答案都不适用于我,但基于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测试了它,它按预期工作。

答案 3 :(得分:0)

如果有人想在订购记录后显示行号,那么这样的事情可能会起作用

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