[英]mySql Select last entry for each user
我有兩個表:
users:
user_id user_name
data:
user_id user_data user_time
我想從數據表中選擇最新的條目,但返回user_name, user_id, user_data
和user_time
。
我嘗試了以下查詢,但是它返回第一個條目,而不是每個用戶的最后一個條目:
sql = "SELECT users.user_name, users.user_id, data.user_data, data.user_time
FROM users
INNER JOIN data ON data.user_id = users.user_id
GROUP BY users.user_name
ORDER BY data.user_time DESC";
在以下位置使用GROUP BY和MAX:
SELECT u.user_id, u.user_name, d.user_data, d.user_time
FROM users u
INNER JOIN data d ON d.user_id = u.user_id
WHERE (d.user_id, d.user_time) =
(SELECT user_id, MAX(user_time) FROM data GROUP BY user_id)
我認為您最好將data_id
列添加到數據表中。 除非有data_id,否則PRIMARY KEY
都需要user_id和user_time(並且user_time並不總是唯一的,也不可靠)
如果有data_id,可能會有點簡單:
SELECT u.user_id, u.user_name, d.user_data, d.user_time
FROM users u
INNER JOIN data d ON d.data_id =
(SELECT data_id FROM data
WHERE user_id = u.user_id ORDER BY data_time DESC LIMIT 1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.