Java MySQL-选择每个用户的最小时间\每个日期的id

Java MySQL-选择每个用户的最小时间\每个日期的id,java,mysql,phpmyadmin,Java,Mysql,Phpmyadmin,我最初有一个表,其中有两个字段user\u id和log\u time,这两个字段都是VAR\u CHAR数据类型。 样本输入 user_id log_time 00148 2013-05-25 08:15:03 00176 2013-05-25 09:09:32 00152 2013-05-25 10:25:55 00146 2013-05-25 10:39:14 00148 2013-05-25 21:23:29 00146 2013-05-25 21:2

我最初有一个表,其中有两个字段user\u id和log\u time,这两个字段都是VAR\u CHAR数据类型。 样本输入

user_id       log_time
00148   2013-05-25 08:15:03
00176   2013-05-25 09:09:32
00152   2013-05-25 10:25:55
00146   2013-05-25 10:39:14
00148   2013-05-25 21:23:29
00146   2013-05-25 21:24:52
00152   2013-05-25 21:25:15
00176   2013-05-25 21:26:34
00148   2013-05-26 09:25:53
00176   2013-05-26 09:54:09
00152   2013-05-26 09:58:21
00146   2013-05-26 10:19:04
00148   2013-05-26 18:13:26
00146   2013-05-26 18:14:04
00152   2013-05-26 19:55:20
00176   2013-05-26 19:56:51
我无法更改此表,因此我所做的是通过此查询来分隔日期和时间:

SELECT  `user_id` , 
        SUBSTRING(  `log_time` , 1, 10 ) AS  'date',
        SUBSTRING(  `log_time` , 11 ) AS  'time'
FROM    `user_log` 
ORDER   BY  `user_id` 
我有这个输出:

u

现在我想得到的是用户特定日期的第一个条目(最早时间) *注意,每个日期可以有两个用户输入


我一直在研究ORDER BY、GROUP BY、JOINs、DISTINCT,但似乎找不到真正的解决方法..通过java上的if条件,我能够获得所需的输出,但我需要它在查询中。希望得到一些帮助。。顺便说一下,我在phpmyadmin上使用mysql,您没有按日期对它们进行分组

SELECT  user_ID, MIN(log_time) log_time
FROM    tableName
GROUP   BY user_ID, DATE(log_time)
ORDER   BY user_ID, log_time
输出

╔═════════╦═════════════════════╗
║ USER_ID ║      LOG_TIME       ║
╠═════════╬═════════════════════╣
║     146 ║ 2013-05-25 10:39:14 ║
║     146 ║ 2013-05-26 10:19:04 ║
║     148 ║ 2013-05-25 08:15:03 ║
║     148 ║ 2013-05-26 09:25:53 ║
║     152 ║ 2013-05-25 10:25:55 ║
║     152 ║ 2013-05-26 09:58:21 ║
║     176 ║ 2013-05-25 09:09:32 ║
║     176 ║ 2013-05-26 09:54:09 ║
╚═════════╩═════════════════════╝
╔═════════╦════════════╦═══════════╗
║ USER_ID ║    DATE    ║   TIME    ║
╠═════════╬════════════╬═══════════╣
║     146 ║ 2013-05-25 ║  10:39:14 ║
║     146 ║ 2013-05-26 ║  10:19:04 ║
║     148 ║ 2013-05-25 ║  08:15:03 ║
║     148 ║ 2013-05-26 ║  09:25:53 ║
║     152 ║ 2013-05-25 ║  10:25:55 ║
║     152 ║ 2013-05-26 ║  09:58:21 ║
║     176 ║ 2013-05-25 ║  09:09:32 ║
║     176 ║ 2013-05-26 ║  09:54:09 ║
╚═════════╩════════════╩═══════════╝
但是如果您想将日期和时间分开

SELECT  user_id , 
        SUBSTRING(log_time, 1, 10) AS 'date',
        MIN(SUBSTRING(log_time, 11)) AS 'time'
FROM    TableName
GROUP   BY user_id, SUBSTRING(log_time,1,10)
ORDER   BY user_id, log_time
输出

╔═════════╦═════════════════════╗
║ USER_ID ║      LOG_TIME       ║
╠═════════╬═════════════════════╣
║     146 ║ 2013-05-25 10:39:14 ║
║     146 ║ 2013-05-26 10:19:04 ║
║     148 ║ 2013-05-25 08:15:03 ║
║     148 ║ 2013-05-26 09:25:53 ║
║     152 ║ 2013-05-25 10:25:55 ║
║     152 ║ 2013-05-26 09:58:21 ║
║     176 ║ 2013-05-25 09:09:32 ║
║     176 ║ 2013-05-26 09:54:09 ║
╚═════════╩═════════════════════╝
╔═════════╦════════════╦═══════════╗
║ USER_ID ║    DATE    ║   TIME    ║
╠═════════╬════════════╬═══════════╣
║     146 ║ 2013-05-25 ║  10:39:14 ║
║     146 ║ 2013-05-26 ║  10:19:04 ║
║     148 ║ 2013-05-25 ║  08:15:03 ║
║     148 ║ 2013-05-26 ║  09:25:53 ║
║     152 ║ 2013-05-25 ║  10:25:55 ║
║     152 ║ 2013-05-26 ║  09:58:21 ║
║     176 ║ 2013-05-25 ║  09:09:32 ║
║     176 ║ 2013-05-26 ║  09:54:09 ║
╚═════════╩════════════╩═══════════╝

像这样的事情。尽管使用这样的子字符串字段不会很快

SELECT user_id , SUBSTRING( log_time , 1, 10 ) AS `date`, MIN(SUBSTRING( log_time , 11 )) AS `time` 
FROM user_log
GROUP BY user_id , SUBSTRING( log_time , 1, 10 )