Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 使用混合字符串和int查询select max_Mysql_Select_Max_Mixed - Fatal编程技术网

Mysql 使用混合字符串和int查询select max

Mysql 使用混合字符串和int查询select max,mysql,select,max,mixed,Mysql,Select,Max,Mixed,我有一个表,其中包含一列生成的代码,数据类型为VARCHAR,混合字符串/int值如下: Table demo ID code ============== 1 | 001qwe 2 | 002qwe 3 | 001asd 问题: 一,。如何获取包含qwe或asd的最大值,我希望它用作过滤器。 二,。如何获取包含最大值的行的id 我想要像这样的东西: select *,MAX(SUBSTRING(code, 1, 3)) from demo w

我有一个表,其中包含一列生成的代码,数据类型为VARCHAR,混合字符串/int值如下:

Table demo
ID        code
==============
1      |  001qwe
2      |  002qwe
3      |  001asd
问题:
一,。如何获取包含
qwe
asd
的最大值,我希望它用作过滤器。 二,。如何获取包含最大值的行的id

我想要像这样的东西:

select *,MAX(SUBSTRING(code, 1, 3)) from demo where SUBSTRING(code, 4, 3) = 'asd'
是,此案例代码长度为6,数据开头的数字为3位

考虑到上述情况,您可以按如下方式编写查询

select *,left(`code`,3)
from demo
order by left(`code`,3) * 1 desc
limit 1

要获得单独的结果,您可以使用以下命令

SELECT a.id qweid, a.code qwecode,b.id asdid,b.code asdcode
FROM 
(SELECT id,`code`
FROM demo
WHERE RIGHT(`code`,3) = 'qwe'
ORDER BY LEFT(`code`,3) * 1 DESC
LIMIT 1) a
CROSS JOIN(SELECT id,`code`
FROM demo
WHERE RIGHT(`code`,3) = 'asd'
ORDER BY LEFT(`code`,3) * 1 DESC
LIMIT 1) b

代码长度是否始终为6个字符?或者代码中的no.s将是前3个,或者它们可以出现在字符串的中间或末尾?很抱歉,响应太晚。是,此案例代码长度为6,数据开头的数字为3位。您应该将
code
列拆分为两个不同的列:一个用于数字,另一个用于字符串。通过这种方式,查询将运行得更快(并且更易于阅读和理解)。@axiac,是的,我喜欢这样做,这就是我的想法。但假设当前情况下,我们无法添加其他列。如何获取包含
qwe
asd
的最大值?qwe的最大值为2是的,这是正确的。asd的最大值为1@MKhalid Junaid,是的,就是这样,即使不需要交叉加入。非常感谢你。