ユーザーごとに 1 つの行のみを表示したい状況で、いくつかのテーブルを結合して多数の行を生成するクエリがあります。group by user.id を使用して「1 人のユーザーのみ」の問題を解決しましたが、ユーザーごとに、(最後ではなく) 最初のエントリを表す結合テーブルから値を取得していることに気付きました。
つまり言い換えれば
user:
id | phone
item:
id | user_id | timestamp
私の意図は、これらのテーブルに参加し、(タイムスタンプまたは item.id desc に基づいて) 最新のアイテムを選択することですが、(各ユーザーが持っているすべてのアイテムを表示するのではなく) ユーザーごとに 1 つのアイテムのみを取得することです。 group by user.id
ユーザーごとに 1 つのアイテムのみを提供するという問題を解決しますが、常に item.id が最も小さい最初のアイテムが表示されますが、最新のアイテムが必要です。
これを達成するためのより良い方法はありますか...私は最初はうんざりしていましdistinct
たが、それはうまくいかないようです。
ティア
[編集] 以下の Jocelin の質問への回答:
select user.id, item.timestamp from item join user on user.id = item.user_id order by user.id