如何获取varchar列的最大值并自动增加它

时间:2017-06-27 00:46:54

标签: mysql sql database

我想得到我的varchar列的最大值,它必须是唯一的,这就是为什么我想得到最大值并增加它。

例如我从tbl_check获得这种情况:

+---------------+
|  check_up_id  |
-----------------
|      1-0      |
|      1-2      |
|      11-1     |
|      111-3    |
|      12-4     |
|      52-5     |
|      1-6      |
|      1-7      |
|      3-9      |
|      3-8      |
|      3-11     |
|      3-10     |
+---------------+

在我的check_up_id中认为我已经增加了我的id的右侧(1 - **),这不是有序的。现在,我不知道如何查询以获得右侧的最大值。只考虑右侧,在那种情况下,我有时会有3位数或2位数,有时左侧只有一位数。我想要的是返回右侧的最大值。在我的例子中,我想在我的查询中返回3-11。忽略增量因为我会在php端做到这一点。我想要的是在( - )

之后返回右侧的最大值

1 个答案:

答案 0 :(得分:2)

使用:

SELECT MAX(CAST(SUBSTRING_INDEX(check_up_id, '-', -1) AS DECIMAL))
FROM tbl_check

SUBSTRING_INDEX返回包含由-字符分隔的指定数量字段的列的子字符串。负数表示从右侧开始计数,因此返回最右侧的字段。

要获取包含此字段的整个字段,请在JOIN

中使用它
SELECT check_up_id
FROM tbl_check
JOIN (
    SELECT MAX(CAST(SUBSTRING_INDEX(check_up_id, '-', -1) AS DECIMAL)) as max_right
    FROM tbl_check) AS x
ON SUBSTRING_INDEX(check_up_id, '-', -1) = max_right