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

nun*_*unu 17 mysql select

我有一些简单的查询:

SELECT foo, bar FROM table
Run Code Online (Sandbox Code Playgroud)

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

我想要做的是根据查询结果中显示的数据显示一些序列号.它就像AUTO_INCREMENT(它不是我想要显示ID).结果我想要的是:

|No|   foo   |    bar   |
-------------------------
|1 |   bla   |    123   |
|2 |   boo   |    abc   |
|3 |   wow   |    xxx   |
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

提前致谢

bun*_*ito 30

select @rownum:=@rownum+1 No, foo, bar from table, (SELECT @rownum:=0) r;
Run Code Online (Sandbox Code Playgroud)

  • @bungdito:你有一些推荐的教程吗?我真的很新的查询.terima kasih atas bantuannya. (2认同)
  • http://forums.mysql.com/read.php?10,36490,36511或http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/ (2认同)

Tra*_*ter 8

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

SET @a:=0;
SELECT @a:=@a+1 No, foo, bar
FROM table;
Run Code Online (Sandbox Code Playgroud)

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


div*_*gon 7

如果您GROUP BY在查询中使用子句,则订单会被扰乱.解决方法是将查询放在这样的FROM子句中.

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