我想得到我的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端做到这一点。我想要的是在( - )
之后返回右侧的最大值答案 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