【问题标题】:MySQL - Number assignment according name ordering [duplicate]MySQL - 根据名称顺序分配编号[重复]
【发布时间】:2021-03-05 09:27:03
【问题描述】:

我原来的表

学生

    id |    Name     |    Class    |  Order Number |    
   32  |    Xavier   | 10A         | 0             |
   10  |    Mary     | 10B         | 0             |
   35  |    Mandy    | 10B         | 0             |
    4  |    Ruby     | 10A         | 0             |
   12  |    Ben      | 10A         | 0             |
   27  |    Ben      | 10B         | 0             | 

我需要这样转换表格:

学生

    id |    Name     |    Class    |  Order Number |    
   12  |    Ben      | 10A         | 1             |  
    4  |    Ruby     | 10A         | 2             |
   32  |    Xavier   | 10A         | 3             |
   27  |    Ben      | 10B         | 1             | 
   35  |    Mandy    | 10B         | 2             |
   10  |    Mary     | 10B         | 3             |

我该怎么做?

感谢您的帮助。

【问题讨论】:

  • 你用的是什么版本的mysql?

标签: mysql sql


【解决方案1】:

您可以将ROW_NUMBER() 窗口函数与以下ORDER BY 子句一起使用

 SELECT id, name, class, 
        ROW_NUMBER() OVER (PARTITION BY class ORDER BY name) AS "Order Number"
   FROM `students`
  ORDER BY class, name

如果数据库版本是 8+

【讨论】:

  • 谢谢巴巴罗斯先生!
猜你喜欢
  • 2022-10-01
  • 2013-10-27
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
相关资源
最近更新 更多