2017-08-03 40 views
2

我在mysql中2个表 - 用户(USER_ID,FIRST_NAME ....)和login_history(USER_ID,login_time)加入MySQL中的两个表 - 一对多的关系

每次用户在包厢,系统记录在login_history中的时间。

我想运行一个查询来从用户表中获取所有字段,并从login_history获取最新登录时间。任何人都可以帮忙吗?

+1

添加一些示例表格数据和预期结果 - 作为格式化文本。同时向我们展示您当前的查询尝试。 – jarlh

回答

1
SELECT t1.col1 
    ,t1.col2 
    ,[...repeat for all columns in User table] 
    ,max(t2.login_time) 
FROM user t1 
INNER JOIN login_history t2 ON t1.user_id = t2.user_id 
GROUP BY t1.col1 
    ,t1.col2 
    ,[..repeat for all columns in User table] 

这应该工作,假设login_time存储在一个健全的数据类型和/或格式。

+1

如果您想为未曾连线的用户建立一条线路,您可以使用'left join'而不是'inner join'。对于这些情况,您的login_time值将为空。 – JulHaus

+0

完美。非常感谢你。有用 ! – Roy

0

你必须使用则加入:

SELECT *, login_history.login_time 
FROM User 
INNER JOIN login_history 
ON User.user_id=login_history.user_id; 

而这个查询也会送给你,用户和login_time的所有列。

+0

非常感谢您的回复。我在用户表中有382条记录,在login_history表中有3793条记录。我运行以下查询 - SELECT user_details。*,user_login_history.login_time FROM user_details INNER JOIN user_login_history ON user_details.user_id = user_login_history.user_id - 这将获取总计3793个结果。但我期待总共383个结果。即所有用户字段+最新登录日期 – Roy

+0

通过单个查询我想获取用户详细信息以及个人用户的最新登录时间。我期待像(UserID,First_Name,Last_Name,Last_Login_Time)的结果。非常感谢您的帮助。 – Roy

+1

您应该使用左连接... –

0

以下是2次的查询,可以帮助你选择最新登录时间和用户的详细信息

SELECT * FROM User C,login_history O where C.user_id=O.user_id order by O.login_time desc limit 1 

SELECT * FROM User C,login_history O where C.user_id=O.user_id and ROWNUM <=1 order by O.login_time desc 
+0

对不起这些没有工作。获取只有1行。 – Roy

+0

你想要最新登录时间的豪宅。这个查询只会给你那个结果。它将获取最新登录的所有用户数据。 –

相关问题