使用group by和order by进行mysql查询

时间:2019-02-17 09:47:14

标签: mysql sql

我有一个像这样的MySQL表:

登录日期为时间戳

id       userID          loginDate
1        524             1546538626
2        524             1546538649
3        1               1546539656
4        925             1546539681
5        1073            1546544363
6        1               1546544731
7        524             1546548094
8        1073            1546548169
9        1073            15465922

我想编写一个查询,该查询显示哪些用户最后一次登录并且还具有登录日期(无重复)。 我已经尝试过该查询,但是它显示每个用户的首次登录!

SELECT * from 
   (select * from lastlogin order by id desc)t 
  GROUP by userID

我不知道该怎么写。有人可以帮忙吗? 谢谢

3 个答案:

答案 0 :(得分:1)

您可以尝试以下操作。

select userId,max(logindate) md
from fzxit_lastlogin 
group by userid
order by userid

答案 1 :(得分:1)

如果您想从登录名中获取其他信息(例如id),则可以使用相关的子查询:

select ll.*
from lastlogin ll
where ll.id = (select ll2.id
               from lastlogin ll2
               where ll2.userId = l.userId
               order by ll2.date desc
               limit 1
              );

答案 2 :(得分:0)

SELECT f.*
FROM fzxit_lastlogin  f
INNER JOIN
    (SELECT *, MAX(loginDate) AS MaxDateTime
    FROM fzxit_lastlogin
    GROUP BY userID) t 
ON f.id = t.id
AND f.loginDate = t.MaxDateTime