我有 2 个要从中查询的表。
第一个表(我们称之为users
)有这些列:id
和name
。
第二个表(我们称之为transactions
)有这些列user_id
:amount
和timestamp
。
如何找出表中transactions
每个用户的最新时间戳users
?
编辑:
感谢您迄今为止的所有回答!真的很感激。如果我想选择最新时间戳大于某个值的用户呢?
SELECT u.*,MAX(t.timestamp) latest_timestamp
FROM transactions t
LEFT JOIN users u ON t.user_id=u.id
GROUP BY t.user_id
应该是你要找的。此查询应为每个用户选择最新的事务时间戳。
SELECT
id,
name,
max(timestamp)
FROM users
INNER JOIN transactions
ON users.id = transactions.user_id
GROUP BY id,name
这应该为用户表中的每个用户提供最大的时间戳
尝试这个
SELECT Users.name,MAX(T.timestamp) As LastTimeStamp
FROM Users
LEFT JOIN Transactions as T ON Users.user_id=T.user_id
GROUP BY Users.name
这个查询比你问的要多,但这是为了以防你的下一个问题是“如果我也想知道属于最大时间戳的数量怎么办?”:
SELECT id, name, t.`timestamp`, amount
FROM (SELECT id, name, MAX(`timestamp`) AS `timestamp`
FROM users u
INNER JOIN transactions t ON t.user_id=u.id
GROUP BY id, name
) AS maxt
INNER JOIN transactions t
ON t.user_id = maxt.id AND t.`timestamp` = maxt.`timestamp`