可能重复:
ROW_NUMBER() in MySQL
这可能吗?我希望以特定顺序获得一堆结果,然后通过其id找出行的位置,例如:
1, foo
2, bar
3, foobar
我希望按字母顺序获得1的位置,它将返回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
的更改。现在它有效:)