查询 select 最大值,混合字符串和整数
query select max with mixed string and int
我有一个 table,其中包含一个用于生成代码的列,数据类型是 VARCHAR,具有混合的 string/int 值,例如:
Table demo
ID code
==============
1 | 001qwe
2 | 002qwe
3 | 001asd
问题:
1。如何获取包含 qwe
或 asd
的最大值,我希望将其用作过滤器。
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
要获得单独的结果,您可以使用以下方法
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
我有一个 table,其中包含一个用于生成代码的列,数据类型是 VARCHAR,具有混合的 string/int 值,例如:
Table demo
ID code
==============
1 | 001qwe
2 | 002qwe
3 | 001asd
问题:
1。如何获取包含 qwe
或 asd
的最大值,我希望将其用作过滤器。
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
要获得单独的结果,您可以使用以下方法
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