mysql中的max()返回9999

时间:2016-01-04 10:27:32

标签: mysql max

我有一个包含唯一列的数据库表,其中包含值

invid
----------
500
1000
B2222
A9998
A9999
A10000

问题每当我的查询max(invid)返回时A9999是什么解决方案

3 个答案:

答案 0 :(得分:1)

试试这个

SELECT CONCAT('A', MAX(0+SUBSTRING(invid,2))) FROM your_table

问题是你是在尝试找到字母数字的最大值,在这种情况下A9999大于A10000,它与9999和10000不一样。

答案 1 :(得分:0)

您可以invid SELECT t.invid, MAX(t.value) AS maxValue FROM ( SELECT invid, CASE WHEN invid LIKE '[A-Z]%' THEN CAST(SUBSTRING(invid, 2) AS UNSIGNED) ELSE CAST(invid AS UNSIGNED) END AS value FROM yourTable ) t 列中的最大值invid

{{1}}

这假设{{1}}中的每个条目最多只有一个字母前缀该数字。这没有考虑到最大价值联系的可能性。

答案 2 :(得分:0)

最佳解决方案是通过将列更改为auto_increment来永久更正问题并删除A字母。

否则您可以使用以下查询:

SELECT CONCAT('A'
         , MAX(0+SUBSTRING(invid,2))) 
FROM table