mysql - 选择查询 char numeric id 按 desc 排序

标签 mysql sql sql-order-by natural-sort

我有示例数据

SMMP022011304196
SMMP022011304199    
SMMP022011304197    
SMMP022011304193
SMMP022011304195    
SMMP022011304198    
SMMP022011304192    
SMMP0220113041910   
SMMP022011304191
SMMP022011304194

如果我使用 SELECT myfield from mytable order by myfield DESC 我得到了这样的结果

SMMP022011304199    
SMMP022011304198    
SMMP022011304197    
SMMP022011304196    
SMMP022011304195    
SMMP022011304194    
SMMP022011304193    
SMMP022011304192    
SMMP0220113041910   
SMMP022011304191

请帮助做出这样的结果:

SMMP0220113041910   
SMMP022011304199    
SMMP022011304198    
SMMP022011304197    
SMMP022011304196    
SMMP022011304195    
SMMP022011304194    
SMMP022011304193    
SMMP022011304192    
SMMP022011304191

最佳答案

只需按字段的长度排序,然后对长度相等的值进行排序:

SELECT myfield from mytable order by 
LENGTH(myfield) DESC,
myfield DESC

SQLFiddle demo

关于mysql - 选择查询 char numeric id 按 desc 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100341/

相关文章:

mysql - 使用主键分块从大表中删除时仍然看到锁定等待超时

mysql - 如何在for循环中进行sql查询并将查询存储在表中

SQL,选择至少匹配 N 列的行对

mysql - mysql 5.7 中奇怪的分组/排序行为

MySQL 双重排序

java - 素面 : submit after succes action

python - 主键和数据插入的 Django 问题

mysql - 将两个选择合并为一个

mysql - SQL查询多重连接

PHP ORDER BY、DESC、LIMIT