在SELECT查询中显示行号

4
这个查询有什么问题?它在rowno列中显示为null。
SELECT @rowno:=@rowno+1 `rn`,`id`, `title`, `topic` 
FROM stories,(SELECT @rownum:=0) r 
WHERE newstype='2';

我在“MySQL查询浏览器”中运行它。提前感谢。

可能是在MYSQL中生成排名的最佳方法是什么?的重复问题。 - Ciro Santilli OurBigBook.com
2个回答

8
你有几个问题:
  • 在查询之前,您需要通过添加set @rowno = 0来初始化@rowno
  • @rowno:=@rowno+1 rn中缺少一个as
  • (SELECT @rownum:=0) r是多余的,除非您想将其作为@rowno的初始化,在这种情况下,您拼错了单词。

修改后代码如下:

SET @rowno = 0;
SELECT @rowno:=@rowno+1 as `rn`, `id`, `title`, `topic` 
FROM stories 
WHERE newstype='2';

1
如果记录按其他字段排序,则此解决方案无效。 - Arvind Krmar

6
在增量中,您使用了rowno,但在初始赋值中使用了rownum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接