2017-08-03 72 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

你想要最新登錄時間的豪宅。這個查詢只會給你那個結果。它將獲取最新登錄的所有用戶數據。 –