id processDefinitionId
1 camelService187
2 camelService187_1
3 camelService187_2
4 camelService188
5 camelService188_1
6 camelService188_2
7 camelService189_3
9 camelService171
10 camelService171_1
11 camelService171_2
12 camelService171_3
13 camelService171_4分析上面的数据,camelService后面接着数字,然后这个数字还有下划线后面跟着的数据
我们把这几个数据当成一组,现在与 187,188,171 这三个组。
要求是 写一个sql ,如果每组中没出现下划线的数据拿就取出没有下划线的数据
,如果存在 就把每组带下划线后的最大的数的数据取出来
谢谢了!!!
1 camelService187
2 camelService187_1
3 camelService187_2
4 camelService188
5 camelService188_1
6 camelService188_2
7 camelService189_3
9 camelService171
10 camelService171_1
11 camelService171_2
12 camelService171_3
13 camelService171_4分析上面的数据,camelService后面接着数字,然后这个数字还有下划线后面跟着的数据
我们把这几个数据当成一组,现在与 187,188,171 这三个组。
要求是 写一个sql ,如果每组中没出现下划线的数据拿就取出没有下划线的数据
,如果存在 就把每组带下划线后的最大的数的数据取出来
谢谢了!!!
解决方案 »
- java += 原理
- java向数据库中插入数据为什么总会报错未找到存储过程xp_sendmail?
- Java 中在JTable的第一列放入单选按钮
- Java 浏览网页停留的随机时间要怎么实现
- java 的 new 对象实例的问题
- 多态俺懂了,强制类型转换又晕了,大侠指点迷经啊~~~~~
- class到exe
- 对于高手来说虽说是简单但是对于新手来说可就不一样了啊!!请高手莅临指教指教啊!谢谢了啊!!
- 求解一个简单的问题,如何将555.346664 格式化成555.35????????
- 请问exception类中的方法printStackTrace()是做什么用的?
- {分享}三十二道java程序要经典面试题
- 调查一下有没有人对永远免杀的远程操控感兴趣
max(processDefinitionId) val
from table
group by regexp_substr(processDefinitionId,'[[:alnum:]]+')
CREATE TABLE `data` (
`id` int(11) NOT NULL,
`processDefinitionId` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;insert into data(id, processDefinitionId ) values
(1, 'camelService187'),
(2, 'camelService187_1'),
(3, 'camelService187_2'),
(4, 'camelService188'),
(5, 'camelService188_1'),
(6, 'camelService188_2'),
(7, 'camelService189_3'),
(9, 'camelService171'),
(10, 'camelService171_1'),
(11, 'camelService171_2'),
(12, 'camelService171_3'),
(13, 'camelService171_4'),
(14, 'camelService190'),
(15, 'camelService191')
;select replace(max(a.processDefinitionId), '_#', '') from
(
select id, case when instr(processDefinitionId,'_') <= 0 then concat(processDefinitionId, '_#') else processDefinitionId end as processDefinitionId from data
) as a
group by
substring(processDefinitionId, 1, case when instr(processDefinitionId, '_') > 0 then instr(processDefinitionId, '_') else char_length(processDefinitionId) end);
p.s.我觉得你的表设计不恰当
结果:+-----------------------------------------------+
| replace(max(a.processDefinitionId), '_#', '') |
+-----------------------------------------------+
| camelService171_4 |
| camelService187_2 |
| camelService188_2 |
| camelService189_3 |
| camelService190 |
| camelService191 |
+-----------------------------------------------+
6 rows in set (0.00 sec)