mySQL中的行号

时间:2013-05-05 18:32:23

标签: mysql

是否可以在MySQL中获取行号?说我有'桌子'

ID  tag name
1   A   alpha
4   B   beta
5   C   gamma
8   D   ceta

我怎样才能进入MySQL,例如,'C'是该表中的第3行?以下内容:

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM table ORDER BY tag ASC;

按行计算行数。但是(抱歉无知的代码)

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM table where tag='C' ORDER BY tag ASC;

结果为1行,pos为0,可能应该如此。

有没有办法让'pos'成为'3',因为我需要它? (订购也很重要,无论是否与问题相关......)

3 个答案:

答案 0 :(得分:4)

您可以使用此

Select rownum from (
SELECT @rownum:=@rownum+1 rownum, t.*FROM (SELECT @rownum:=0) r, table t order by tag) as t1
where tag = 'C'

答案 1 :(得分:1)

如果您的ID严格按行号增加,您可以

SELECT COUNT(*) FROM tbl WHERE ID <= (SELECT ID FROM tbl WHERE tag = 'C');

我不确定你的意思是什么意思。

旁注:您的代码

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM tbl where tag='C' ORDER BY tag ASC;

无法工作,因为@pos只对结果集进行操作,它只包含一条记录。

答案 2 :(得分:0)

实际上,我之前没有考虑过一种可能性:

SELECT count(1) FROM table WHERE tag <= 'C' ORDER BY tag

这似乎做同样的事情,也快一点......或者我错过了什么?