在mysql中加入两个表 - 一对多关系

时间:2017-08-03 14:22:16

标签: mysql sql

我在mysql中有2个表 - User(user_id,first_name ....)和login_history(user_id,login_time)

每次用户进入时,系统都会在login_history中记录时间。

我想运行一个查询来获取users表中的所有字段以及login_history中的最新登录时间。有人可以帮忙吗?

3 个答案:

答案 0 :(得分: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 :(得分:0)

您必须使用加入:

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

此查询将为您提供User的所有列和login_time。

答案 2 :(得分: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