加入MySQL中的两个表 - 一对多的关系
我在mysql中2个表 - 用户(USER_ID,FIRST_NAME ....)和login_history(USER_ID,login_time)加入MySQL中的两个表 - 一对多的关系
每次用户在包厢,系统记录在login_history中的时间。
我想运行一个查询来从用户表中获取所有字段,并从login_history获取最新登录时间。任何人都可以帮忙吗?
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
存储在一个健全的数据类型和/或格式。
你必须使用则加入:
SELECT *, login_history.login_time
FROM User
INNER JOIN login_history
ON User.user_id=login_history.user_id;
而这个查询也会送给你,用户和login_time的所有列。
非常感谢您的回复。我在用户表中有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
通过单个查询我想获取用户详细信息以及个人用户的最新登录时间。我期待像(UserID,First_Name,Last_Name,Last_Login_Time)的结果。非常感谢您的帮助。 – Roy
您应该使用左连接... –
以下是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
对不起这些没有工作。获取只有1行。 – Roy
你想要最新登录时间的豪宅。这个查询只会给你那个结果。它将获取最新登录的所有用户数据。 –
添加一些示例表格数据和预期结果 - 作为格式化文本。同时向我们展示您当前的查询尝试。 – jarlh