我想在我的 MySQL 查询中使用排名函数。我使用了 MySQL 中 Rank 函数的建议
我只想选择排名最高的一行。我的查询看起来像:
SELECT c1, c2, c3, @curRank := @curRank + 1 AS rank
FROM tab1 t, (SELECT @curRank := 0) r
WHERE t.c5 = 'asd' AND t.c6 = 'qwe' AND rank = 1
ORDER BY t.c8 DESC
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR 1054 (42S22): Unknown column 'rank' in 'where clause'
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我该如何解决我的查询?
您不能使用与子句ALIAS在同一级别生成的WHERE,您可以使用子查询包装它。例如,
SELECT *
FROM
(
SELECT c1, c2, c3, @curRank := @curRank + 1 AS rank
FROM tab1 t, (SELECT @curRank := 0) r
WHERE t.c5 = 'asd' AND t.c6 = 'qwe'
ORDER BY t.c8 DESC
) a
WHERE rank = 1
Run Code Online (Sandbox Code Playgroud)
SQL操作顺序如下:
在ALIAS上创建的SELECT条款,因此尚未对访问的WHERE条款。
| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |