Mysql 使用混合字符串和int查询select max
我有一个表,其中包含一列生成的代码,数据类型为VARCHAR,混合字符串/int值如下: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
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,是的,就是这样,即使不需要交叉加入。非常感谢你。