3

我在 MySQL 中有一个表填充如下。现在我需要按排序顺序选择记录的行号。例如,以 开头的单词的行数'c'应该是4

Words
=====
coffee
banana
apple
cherry
blackberry

我尝试了以下查询,但我得到了错误的结果。这dict是表名,words也是列名。

SELECT @rownum:=@rownum + 1 id FROM (SELECT * FROM dict ORDER BY words) d,(SELECT @rownum:=0) r WHERE d.words LIKE CONCAT('c','%')

对于上述查询,我​​正在获取外部查询的行号。但我想要内部查询的行号。我不知道如何得到。

任何帮助表示赞赏。谢谢。

4

1 回答 1

9

试试这个:

SET @rownum = 0;
SELECT id 
FROM (SELECT *, @rownum:=@rownum + 1 AS id FROM dict ORDER BY words) d
WHERE d.words LIKE CONCAT('c','%')

作为单个查询,试试这个:

SELECT id 
FROM (SELECT *, @rownum:=@rownum + 1 AS id FROM dict, (SELECT @rownum:=0) r ORDER BY words) d
WHERE d.words LIKE CONCAT('c','%')
于 2011-11-22T22:58:15.547 回答