如何分别在MySQL中对重复项进行分组

时间:2014-04-13 08:00:33

标签: mysql

我有一张请求表..

user_id     no:of_mach         time_start                 req_time
11               3             2012-12-12 09:00:00      2012-12-11 09:00:00
12               4             2012-12-14 08:00:00      2012-12-14 06:00:00
13               4             2012-12-12 09:00:00      2012-12-12 02:00:00
14               2             2013-12-12 07:00:00      2012-12-12 03:00:00
15               2             2012 12-14 08:00:00      2012-12-14 05:00:00

从上表中,我需要获取请求相同time_start的用户的req_time。

重复的time_start是

2012-12-12 09:00:00 by user_id 11,13.
2012-12-14 08:00:00 by user_id 12,15.

现在,他们每个人的请求时间都不同了.. 我想要一个查询,以便它得到我的结果: -

time_start 2012-12-12 09:00:00请求的用户的req_time是: -

2012-12-11 09:00:00
2012-12-12 02:00:00

time_start 2012-12-14 08:00:00请求的用户的req_time是: -

2012-12-14 06:00:00
2012-12-14 05:00:00

我使用过查询: -

SELECT req_time FROM user_req WHERE user_id IN (SELECT o.user_id FROM user_req o INNER JOIN ( SELECT starttime, COUNT( * ) AS dupeCount FROM user_req GROUP BY starttime HAVING COUNT( * ) >1)oc ON o.starttime = oc.starttime) ORDER BY req_time ASC;

这会为所有重复的time_start值打印所有req_time ..

输出将是: -

2012-12-11 09:00:00
2012-12-12 02:00:00
2012-12-14 06:00:00
2012-12-14 05:00:00

我可以使用一个查询来帮助我根据上面解释的每个重复time_start对此req_time进行分组。
然后我可以在java中调用它并将其用于我的程序..

请帮帮我..

1 个答案:

答案 0 :(得分:1)

试试这个:

select * from user_req where time_start in
(select time_start
 from user_req
 group by time_start
 having count(time_start) > 1)
 order by time_start, req_time

这将返回表中的记录,其中包含time_startstart_time排序的多个相同req_time的计数。如果需要,您可以选择仅使用适当的列名替换select *