查询 select 最大值,混合字符串和整数

query select max with mixed string and int

我有一个 table,其中包含一个用于生成代码的列,数据类型是 VARCHAR,具有混合的 string/int 值,例如:

Table demo
ID        code
==============
1      |  001qwe
2      |  002qwe
3      |  001asd

问题:

1。如何获取包含 qweasd 的最大值,我希望将其用作过滤器。

2。如何获取包含最大值的行的id

我想要类似的东西:

select *,MAX(SUBSTRING(code, 1, 3)) from demo where SUBSTRING(code, 4, 3) = 'asd'

Yes this case code length is 6 and number is 3 digit in the beginning of data

考虑到以上内容,您可以按如下方式编写查询

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

DEMO

要获得单独的结果,您可以使用以下方法

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

DEMO