是否可以在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',因为我需要它? (订购也很重要,无论是否与问题相关......)
答案 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
这似乎做同样的事情,也快一点......或者我错过了什么?