我有一个名为seat的表,其中包含以下记录:

+----+------+
| ID | Seat |
+----+------+
| 1  | 1a   |
+----+------+
| 2  | 1b   |
+----+------+
| 3  | 2a   |
+----+------+
| 4  | 2b   |
+----+------+
| 5  | 3a   |
+----+------+
| 6  | 3b   |
+----+------+
| 7  | 4a   |
+----+------+
| 8  | 4b   |
+----+------+
| 9  | 10a  |
+----+------+
| 10 | 10b  |
+----+------+
| 11 | 11a  |
+----+------+
| 12 | 11b  |
+----+------+
| 13 | 12a  |
+----+------+
| 14 | 12b  |
+----+------+

我想根据第二列的最后一个字符对结果进行排序,因此我的表显示:
+----+------+
| ID | Seat |
+----+------+
| 1  | 1a   |
+----+------+
| 3  | 2a   |
+----+------+
| 5  | 3a   |
+----+------+
| 7  | 4a   |
+----+------+
| 9  | 10a  |
+----+------+
| 11 | 11a  |
+----+------+
| 13 | 12a  |
+----+------+
| 2  | 1b   |
+----+------+
| 4  | 2b   |
+----+------+
| 6  | 3b   |
+----+------+
| 8  | 4b   |
+----+------+
| 10 | 10b  |
+----+------+
| 12 | 11b  |
+----+------+
| 14 | 12b  |
+----+------+

我怎样才能达到这个结果?我应该使用什么功能?

最佳答案

首先,可以使用right按最后一个值排序(即,sign),然后将整个字符串转换为unsigned(即,在MySQL中,11a转换为11):

order by right(`seat`, 1), cast(`seat` as unsigned)

SQLFiddle

关于mysql - 记录中按最后一个字母排序的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35835968/

10-11 22:22
查看更多