作者:巡山小妖 | 来源:互联网 | 2023-01-28 09:25
我正在使用MySQL/MariaDB.我有一个查询,我使用ORDER BY user_id ASC
它给我以下结果:
+---------+
| user_id |
+---------+
| admin1 |
| admin10 |
| admin11 |
| admin2 |
| user1 |
| user10 |
| user11 |
| user12 |
| user13 |
| user2 |
| user20 |
| user21 |
| user22 |
| user23 |
+---------+
我尝试了建议的解决方案ORDER BY LENGTH(user_id), user_id ASC
,只要所有user_id
的开始都很有效user
.但是,如果我从那user_id
开头就让我们说,admin
那么它给了我这个:
+---------+
| user_id |
+---------+
| user1 |
| user2 |
| admin1 |
| admin2 |
| user10 |
| user11 |
| user12 |
| user13 |
| user20 |
| user21 |
| user22 |
| user23 |
| admin10 |
| admin11 |
+---------+
但我希望结果像这样订购:
+---------+
| user_id |
+---------+
| admin1 |
| admin2 |
| admin10 |
| admin11 |
| user1 |
| user2 |
| user10 |
| user11 |
| user12 |
| user13 |
| user20 |
| user21 |
| user22 |
| user23 |
+---------+
我可以用SQL实现吗?
1> Matt..:
使用该LENGTH
功能以及您的列
SELECT *
FROM yourtable
ORDER BY LENGTH(user_id), user_id ASC
产量
user_id
user1
user2
user10
user11
user12
user13
user20
user21
user22
user23
SQL小提琴:http://sqlfiddle.com/#!9/23f4de/3/0