gpt4 book ai didi

java - MySQL - 选择每个日期每个 user_id 的最短时间

转载 作者:行者123 更新时间:2023-11-30 01:36:17 24 4
gpt4 key购买 nike

我最初有一个表,其中有两个字段 user_id 和 log_time ,均为 VAR_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`

我有这个输出:

ser_id    date       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

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

我一直在研究 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 ║
╚═════════╩═════════════════════╝

但是如果你想分开DATETIME

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 ║ 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 ║
╚═════════╩════════════╩═══════════╝

关于java - MySQL - 选择每个日期每个 user_id 的最短时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com