簡體   English   中英

mySql為每個用戶選擇最后一個條目

[英]mySql Select last entry for each user

我有兩個表:

users:
user_id    user_name

data:
user_id    user_data    user_time

我想從數據表中選擇最新的條目,但返回user_name, user_id, user_datauser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM