Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取数据库中varchar列的最大值_Mysql_Sql - Fatal编程技术网

Mysql 获取数据库中varchar列的最大值

Mysql 获取数据库中varchar列的最大值,mysql,sql,Mysql,Sql,如何获得具有这些值的varchar列的最大值 例如,我有一个字段名myid,它是varchar,我想要的是得到myid字段的最大值。如何查询以获取myid列的1-10值 myid 1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-10 1-9 对于您显示的数据: select myid from data_table order by cast(substr(myid, 3, 2) as int) desc limit 1; 在这种情况下,排序函数是破折号后面标识符部分的整

如何获得具有这些值的varchar列的最大值

例如,我有一个字段名myid,它是varchar,我想要的是得到myid字段的最大值。如何查询以获取myid列的1-10值

myid
1-1
1-2
1-3
1-4
1-5
1-6
1-7
1-8
1-10
1-9

对于您显示的数据:

select myid
from data_table
order by cast(substr(myid, 3, 2) as int) desc
limit 1;

在这种情况下,排序函数是破折号后面标识符部分的整数值。一般来说,对于不同或更复杂的数据,您只需确定适当的排序函数是什么。

对于所显示的数据:

select myid
from data_table
order by cast(substr(myid, 3, 2) as int) desc
limit 1;

在这种情况下,排序函数是破折号后面标识符部分的整数值。一般来说,对于不同或更复杂的数据,您只需确定适当的排序函数是什么。

我建议使用以下技巧:

order by length(myid) desc, myid desc
这将适用于问题中的数据。更一般的答案是:

order by substring_index(myid, '-', 1) + 0, substring_index(myid, '-', -1) + 0 

我建议使用以下技巧:

order by length(myid) desc, myid desc
这将适用于问题中的数据。更一般的答案是:

order by substring_index(myid, '-', 1) + 0, substring_index(myid, '-', -1) + 0 

1-10不是最大字符串值,例如,1(10的第一个字符)小于1-2中的2。在您的头脑中,您将字符串拆分为两个数值,并按第一个数值排序,然后按第二个数值排序。您可以在SQL中对字符串函数执行相同的操作,但我建议不要首先将值存储为字符串。如果您对单独的数值感兴趣,请将它们存储为两个单独的数值列,而不是一个字符串。1-10不是最大字符串值,例如1(10的第一个字符)小于1-2中的2。在您的头脑中,您将字符串拆分为两个数值,并按第一个数值排序,然后按第二个数值排序。您可以在SQL中对字符串函数执行相同的操作,但我建议不要首先将值存储为字符串。如果您对单独的数值感兴趣,请将它们存储为两个单独的数值列,而不是一个字符串。@JcJohn。我不知道你的问题是什么意思。这个问题和答案与自动递增列无关。您好,先生。。很抱歉如果我弄错了,或者这是一个错误的查询,请纠正我。我通过获取最后一个主键并在php中递增它,使主键停止重复。这是正确的吗?通过子字符串索引(tbl\U check\U up.check\U id,'-',1)+0,子字符串索引(tbl\U check\U id,'-',1)+0,从tbl\U check\U id,'-',1)+0描述限制中选择tbl\U check\U up.check\U id1@JcJohn . . . 看起来它将返回最大的值。但是,如果你在构造字符串,为什么不直接用零填充数字,这样你就可以使用简单的排序?先生,你是什么意思?我是初学者。我该怎么做?如果我的查询只有(1-*)一个数字或(1-***)返回最大的数字,那么它是否有效?@JcJohn。像
'1-00001'
这样的值将正确排序。您可以使用
lpad()
()创建它们。@JcJohn。我不知道你的问题是什么意思。这个问题和答案与自动递增列无关。您好,先生。。很抱歉如果我弄错了,或者这是一个错误的查询,请纠正我。我通过获取最后一个主键并在php中递增它,使主键停止重复。这是正确的吗?通过子字符串索引(tbl\U check\U up.check\U id,'-',1)+0,子字符串索引(tbl\U check\U id,'-',1)+0,从tbl\U check\U id,'-',1)+0描述限制中选择tbl\U check\U up.check\U id1@JcJohn . . . 看起来它将返回最大的值。但是,如果你在构造字符串,为什么不直接用零填充数字,这样你就可以使用简单的排序?先生,你是什么意思?我是初学者。我该怎么做?如果我的查询只有(1-*)一个数字或(1-***)返回最大的数字,那么它是否有效?@JcJohn。像
'1-00001'
这样的值将正确排序。您可以使用
lpad()
()创建它们。