按时间间隔显示唯一记录

时间:2017-06-21 07:21:53

标签: mysql sql

假设我有下表:

Date               Name              Subject
----               ----              -------
01.03.17 10:03:00  Joseph            English
01.03.17 11:04:00  Joseph            English
01.03.17 13:05:00  Joseph            Math
01.03.17 14:03:00  Carl              French
02.03.17 09:02:00  Joseph            French
02.03.17 10:10:00  Carl              French
03.03.17 09:03:00  Joseph            Biology
04.03.17 16:03:00  Carl              Biology
05.03.17 12:03:00  Carl              English
06.03.17 13:03:00  Joseph            English
06.03.17 09:02:00  Joseph            English
06.03.17 10:06:00  Joseph            French
07.03.17 09:03:00  Joseph            Biology

我想写一个查询,我会:

  • 选择月份(例如,3月,或从01.03.17至31.03.17)

  • 选择特定时间间隔(例如,24小时)

  • 显示所有时间间隔内的所有唯一事件,只要每个时间间隔出现多次。因此,如果约瑟夫在24小时内有两次英语,这不会显示,但如果他有英语和法语,那么就会显示结果。

结果如下:

Date               Name              Subject
----               ----              -------
01.03.17 10:03:00  Joseph            English
01.03.17 13:05:00  Joseph            Math
02.03.17 09:02:00  Joseph            French

01.03.17 11:04:00  Joseph            English
01.03.17 13:05:00  Joseph            Math
02.03.17 09:02:00  Joseph            French

01.03.17 13:05:00  Joseph            Math
02.03.17 09:02:00  Joseph            French


04.03.17 16:03:00  Carl              Biology
05.03.17 12:03:00  Carl              English


06.03.17 09:02:00  Joseph            English
06.03.17 10:06:00  Joseph            French

06.03.17 10:06:00  Joseph            French
06.03.17 13:03:00  Joseph            English
07.03.17 09:03:00  Joseph            Biology

06.03.17 10:06:00  Joseph            French
07.03.17 09:03:00  Joseph            Biology

06.03.17 13:03:00  Joseph            English
07.03.17 09:03:00  Joseph            Biology

如果不使用循环来选择时间间隔,有没有办法做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

检查此查询

http://sqlfiddle.com/#!9/1baa4/28

如果没问题,那么您可以在服务器端代码中处理结果形成逻辑。