我有一些简单的查询:
SELECT foo, bar FROM table
我认为你现在的结果是什么样的。
我想要做的是根据查询结果中显示的数据显示一些序号。它就像AUTO_INCREMENT
(这并不意味着我想要显示ID)。
结果我想要的是:
|No| foo | bar |
-------------------------
|1 | bla | 123 |
|2 | boo | abc |
|3 | wow | xxx |
我该怎么做呢?
提前致谢
答案 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)
这两个答案都不适用于我,但基于bungdito的source,我意识到你可以更轻松地做一些事情:
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