我有一个名为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/