我想要获取 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 端执行此操作。我想要的是返回 ( - ) 之后右侧的最大值
最佳答案
用途:
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
关于mysql - 如何获取 varchar 列的最大值并自动递增它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770730/