MYSQL 根据时间戳在同一 ID 中只显示一行
MYSQL Show one row only in same ID based on Timestamp
我怎样才能select 只有一行在同一个ID?
这是我的MySQL代码
Select * from logoutdetails ORDER BY LogInTime DESC LIMIT 1;
这是我的Table
--------------------------------
| ID | LogInTime |
--------------------------------
| 07 | 2017-01-25 14:41:32 |
| 08 | 2017-01-25 14:33:22 |
| 07 | 2017-01-25 14:26:28 |
| 08 | 2017-01-25 14:18:56 |
--------------------------------
按 id
分组以获得唯一的。然后你必须决定你想要为每个 id
获得哪个日期。使用 max()
获取每个
的最新日期
Select id, max(LogInTime) as LogInTime
from logoutdetails
group by id
如果您对从每个 ID
中获取最近的时间戳感到满意,那么您可以试试这个:
SELECT ID, MAX(LogInTime) AS LogInTime
FROM logoutdetails
GROUP BY ID
ORDER BY ID
如果您想保留最早的登录时间,您也可以使用 MIN()
代替 MAX()
。
如果 logoutdetails
table 有其他列,而您也想 select 那些,则必须使用子查询首先确定最大 ID
记录然后加入原来的 table。像这样:
SELECT t1.*
FROM logoutdetails t1
INNER JOIN
(
SELECT ID, MAX(LogInTime) AS max_login_time
FROM logoutdetails
GROUP BY ID
) t2
ON t1.ID = t2.ID AND
t1.LogInTime = t2.max_login_time
我怎样才能select 只有一行在同一个ID?
这是我的MySQL代码
Select * from logoutdetails ORDER BY LogInTime DESC LIMIT 1;
这是我的Table
--------------------------------
| ID | LogInTime |
--------------------------------
| 07 | 2017-01-25 14:41:32 |
| 08 | 2017-01-25 14:33:22 |
| 07 | 2017-01-25 14:26:28 |
| 08 | 2017-01-25 14:18:56 |
--------------------------------
按 id
分组以获得唯一的。然后你必须决定你想要为每个 id
获得哪个日期。使用 max()
获取每个
Select id, max(LogInTime) as LogInTime
from logoutdetails
group by id
如果您对从每个 ID
中获取最近的时间戳感到满意,那么您可以试试这个:
SELECT ID, MAX(LogInTime) AS LogInTime
FROM logoutdetails
GROUP BY ID
ORDER BY ID
如果您想保留最早的登录时间,您也可以使用 MIN()
代替 MAX()
。
如果 logoutdetails
table 有其他列,而您也想 select 那些,则必须使用子查询首先确定最大 ID
记录然后加入原来的 table。像这样:
SELECT t1.*
FROM logoutdetails t1
INNER JOIN
(
SELECT ID, MAX(LogInTime) AS max_login_time
FROM logoutdetails
GROUP BY ID
) t2
ON t1.ID = t2.ID AND
t1.LogInTime = t2.max_login_time