私は、ユーザがデータベースに保存されている連絡先にメッセージを送信できるWebアプリケーションを持っています。メッセージが正常に転記されると、受信者の連絡先の詳細が別のテーブルに入力されます。私は、そのメッセージの受信者を返すクエリを作成したいと思います。複数のレコードのPostgreSQLの最新のエントリを返す
communication_idは外部キーであり、個人ごとではなく異なる通信ごとに区別されます。例えば、ユーザーがメッセージを送信し、20人の受信者がある場合、私はのみ20全20は同じcommunication_idを持って
を取得したいのですが、私が持っているクエリは、これまで
SELECT communication_id, first_name ||' ' || last_name AS recipient_name, telephone
FROM communications_sent
ORDER BY communication_id DESC
ですが皆が知っているとおり、すべてを返すでしょう。また、いくつかのエントリが除外されるので、私はLIMIT
できません。 COUNT(*)>1
を使用することはできません。古い通信でも1より大きいカウントがあるためです。最新のエントリだけを取得するにはどうすればよいですか? 、一つのエントリだろ100
上記の私のクエリの出力例は次のようになります。
|communication_id|recipient_name|telephone|
| 263 | John Doe |712100100|
| 263 | Willy Bill |721001001|
| 262 | Mary May |700101010|
| 262 | Joe Jimmy |722111000|
ありがとうございます。出来た。私は質問がある、なぜそれは入れ子にする必要がありますか?最初の引数として 'SELECT MAX(cs.communication_id)、...'として使用されている場合は、エラー –
@Clint_Aを出力します。 。 。 WHERE句では集計関数を使用できないためです。 –