简体   繁体   English

Mysql Query查找每个用户的上次登录日期

[英]Mysql Query to find last logged in date of each user

I have two tables tbl_user and tbl_lastlogin as shown below 我有两个表tbl_user和tbl_lastlogin,如下所示

Table tbl_user 表tbl_user

id|  name 
---------
1 | user1 
2 | user2 
3 | user3

Table tbl_lastlogin 表tbl_lastlogin

id | loginid | date_lastlogin
----------------------------
1  |    1    |  2014-03-28
2       1       2014-03-29
3       2       2014-02-14
4       2       2014-02-15

Relation of Above table (tbl_user.id = tbl_lastlogin.loginid) 上表的关系(tbl_user.id = tbl_lastlogin.loginid)

How do I get output as. 我如何获得输出。

id | name| date_lastlogin
---------------------
1  |user1 | 2014-03-29 
2  |user2 | 2014-02-15
3  |user3 | null

I need most recently logged in date of each user. 我需要最近登录每个用户的日期。

Thank you. 谢谢。

You need to join your tables and get max of last login date 您需要加入表格并获取最后一次登录日期

SELECT u.id,u.name,MAX(l.date_lastlogin) date_lastlogin
FROM tbl_user u
LEFT JOIN tbl_lastlogin l ON(u.id=l.loginid )
GROUP BY u.id

If you only need the last login date you can use an embbeded select into main select-list: 如果您只需要上次登录日期,则可以使用嵌入式选择进入主选择列表:

select id, name, 
       (select max(date_lastlogin) 
           from tbl_lastlogin ll 
           where ll.loginid = u.id) as 'date_lastlogin` 
from tbl_user u;

Just an advice, the name tbl_lastlogin is not too much addecuate, becasue It stores the login history not only the last one, maybe tbl_loginhistory or something like that 只是一个建议,名称tbl_lastlogin不是太多addecuate,因为它存储登录历史不仅是最后一个,也许是tbl_loginhistory或类似的东西

我相信LEFT OUTER JOIN和GROUP BY会帮助你。

Try this 尝试这个

SELECT U.id,U.name,UL.date_lastlogin FROM  tbl_user U 
LEFT JOIN tbl_lastlogin UL ON U.id=UL.loginid 
GROUP BY UL.loginid 
ORDER BY UL.date_lastlogin DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM