如何将ROW INDEX作为列添加到SQL SELECT查询?

Yar*_*old 15 mysql sql

假设我有这样的SQL查询:

SELECT id, name, index(not a real column) FROM users ORDER BY rating DESC
Run Code Online (Sandbox Code Playgroud)

我想将列添加到将代表记录索引的选定列.

例:

 id    name  rating
 1     a     4
 2     b     2
 3     c     8
 4     d     5
Run Code Online (Sandbox Code Playgroud)

对于这个表我想得到:

 id    name  rating  index
 3     c     8       1
 4     d     5       2
 1     a     4       3
 2     b     2       4
Run Code Online (Sandbox Code Playgroud)

bon*_*igo 19

尝试以下方法获取row_index:

set @row_num = 0; 
SELECT id,name,rating, @row_num := @row_num + 1 as row_index FROM users
ORDER BY rating desc;
Run Code Online (Sandbox Code Playgroud)

  • MySQL 不支持分析/“窗口”/OLAP 类型的函数,因此这非常优雅!在 Oracle 或 MS SQL-Server 中,您可以编写: select id, name, rating, row_number () over (partition by id order by rating desc) "index" from users order by rating desc (2认同)