1

クエリしたいテーブルが2つあります。

最初のテーブル(これをusers)には、次の列があります:idおよびname

2番目のテーブル(これを)には、、、および。transactionsの列がuser_idあります。amounttimestamp

テーブルtransactions内の各ユーザーの最新のタイムスタンプを確認するにはどうすればよいですか?users

編集:

これまでのすべての回答に感謝します!心から感謝する。最新のタイムスタンプが特定の値より大きいユーザーを選択したい場合はどうでしょうか。

4

4 に答える 4

3
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

あなたが探しているものでなければなりません。このクエリでは、各ユーザーの最新のトランザクションタイムスタンプを選択する必要があります。

于 2012-06-25T04:05:20.843 に答える
1
SELECT 
     id,
     name,
     max(timestamp) 
FROM users 
INNER JOIN transactions 
ON users.id = transactions.user_id
GROUP BY id,name

これにより、usersテーブル内のすべてのユーザーに最大のタイムスタンプが与えられます。

于 2012-06-25T04:07:11.970 に答える
0

これを試して

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    
于 2012-06-25T04:08:35.040 に答える
0

このクエリは、あなたが尋ねた以上のことを行いますが、これは、次の質問が「最大タイムスタンプに属する量も知りたい場合はどうなるか」という場合に備えてです。

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`
于 2012-06-25T04:13:01.887 に答える