假设我有下表:
id | 类别_id | item_id | 创建于 |
---|---|---|---|
7 | 11 | 106 | 2024-05-06 |
6 | 3 | 102 | 2024-05-06 |
5 | 11 | 101 | 2024-05-05 |
4 | 9 | 98 | 2024-05-04 |
3 | 3 | 97 | 2024-05-03 |
2 | 1 | 91 | 2024-05-02 |
1 | 11 | 89 | 2024-05-01 |
如何选择所有行,并添加一列来表示按类别分组的每个项目的创建顺序?
结果应该是:
id | 类别_id | item_id | 按类别排序的商品 | 创建于 |
---|---|---|---|---|
7 | 11 | 106 | 3 | 2024-05-06 |
6 | 3 | 102 | 2 | 2024-05-06 |
5 | 11 | 101 | 2 | 2024-05-05 |
4 | 9 | 98 | 1 | 2024-05-04 |
3 | 3 | 97 | 1 | 2024-05-03 |
2 | 1 | 91 | 1 | 2024-05-02 |
1 | 11 | 89 | 1 | 2024-05-01 |
可以按照
id
列或created_at
列的顺序
性能良好的查询是否可行?或者我需要添加一些更多信息,例如关系表?
你能试试这个吗:
SELECT t1.*,
ROW_NUMBER() OVER(PARTITION BY created_at ORDER BY category_ID
FROM yourtable t1
;