一尘不染

MYSQL:如何“重新排序”表

mysql

我有一张像下面的桌子,

| id  | name   | color  |
------+--------+---------
| 1   | pear   | green  |
| 2   | apple  | red    |
| 3   | banana | yellow |
| 4   | grape  | purple |

我想使用“名称”列按字母顺序重新排序,并使用此新顺序重置ID(自动递增),以得到以下结果

| id  | name   | color  |
------+--------+---------
| 1   | apple  | red    |
| 2   | banana | yellow |
| 3   | grape  | purple |
| 4   | pear   | green  |

问题 :如何使用MYSQL执行此操作?


阅读 582

收藏
2020-05-17

共1个答案

一尘不染

请问您为什么要这么做?

如果有人修改了任何名称值或插入了新行,则会使您的订购方案混乱。试图以表的其他位置(名称列)已经可用的PK顺序存储一些含义似乎是多余的,因此是个坏主意。

更好的解决方案是不用担心ID列的值,而在应用程序中使用数据时仅对名称列进行排序。

PS:
对非回答类型的回复表示抱歉。通常,我认为您有充分的理由,只给出直接回答您要尝试做的事情的答案,但是我从您的其他问题中注意到,您仍处于数据库设计的早期学习阶段,因此我想提供帮助为您指明正确的方向,而不是帮助您朝着不明智的方法前进。

2020-05-17