首页 > 解决方案 > MySQL列顺序按字母数字忽略最高值

问题描述

在 MySQL 中,我有一个名为 custom_meta 的表,我在其中获取如下值

id   meta_value
1    USNEWYORK01
2    USNEWYORK02
3    USNEWYORK03
4    USNEWYORK04
5    USNEWYORK05
6    USNEWYORK06
7    USNEWYORK07
8    USNEWYORK10
9    USNEWYORK14
10   USNEWYORK16
11   USNEWYORK20
12   USNEWYORK21
13   USNEWYORK32
14   USNEWYORK45
15   USNEWYORK56
16   USNEWYORK78
17   USNEWYORK68
18   USNEWYORK69
19   USNEWYORK80
20   USNEWYORK90
21   USNEWYORK99
22   USNEWYORK100
23   USNEWYORK45
24   USNEWYORK101

现在我想获得最高数字的元值。所以在表中你可以看到最高的是USNEWYORK101。所以为了得到这个,我做了这样的查询

SELECT meta_value from custom_meta ORDER BY meta_value DESC LIMIT 1

但它USNEWYORK99总是越来越。我也尝试过使用CAST,但这也不起作用。

那么有人可以帮我完成这项工作吗?任何建议和建议都将是非常可观的。

谢谢。

标签: mysqlsqlperformancemysql-5.7

解决方案


SELECT id,
       meta_value,
       Cast(Substring(meta_value, 10, Length(meta_value)) AS UNSIGNED)
FROM   custom_meta
ORDER  BY 3 DESC
LIMIT  1; 

推荐阅读