在MYSQL查询中获取行位置

时间:2011-08-14 15:36:37

标签: mysql sql

  

可能重复:
  ROW_NUMBER() in MySQL

这可能吗?我希望以特定顺序获得一堆结果,然后通过其id找出行的位置,例如:

1, foo
2, bar
3, foobar

我希望按字母顺序获得1的位置,它将返回2

2 个答案:

答案 0 :(得分:10)

SELECT id, name, rank FROM 
    (
    SELECT t.id, t.name,
        @rownum := @rownum + 1 AS rank
    FROM TABLE t, (SELECT @rownum := 0) r
    ORDER BY name ASC
    ) `selection` WHERE id=1

从此答案修改>> ROW_NUMBER() in MySQL

答案 1 :(得分:3)

工作答案(在MySQL中):

如果您有下表“名称”:

+------+--------+
| id   | name   |
+------+--------+
|    1 | foo    |
|    2 | bar    |
|    3 | foobar |
+------+--------+

你想知道“foo”按字母顺序排在哪里,然后:

SELECT z.rank FROM (
    SELECT t.id, t.name, @rownum := @rownum + 1 AS rank
    FROM names t, (SELECT @rownum := 0) r
    ORDER BY name ASC
) as z WHERE id=1;

将产生:

+------+
| rank |
+------+
|    2 |
+------+

来自@ potNpan解决方案的更改是添加了as z以及从@rownum = @rownum + 1@rownum := @rownum + 1的更改。现在它有效:)