繁体   English   中英

返回PostgreSQL中的最新条目以获取多个记录

[英]Returning the latest entries in PostgreSQL for multiple records

我有一个Web应用程序,用户可以在其中向存储在数据库中的联系人发送消息。 成功发布消息后,收件人的联系方式将输入到另一个表中。 我想进行查询,以返回该邮件的收件人。 这些是表格中的列:

| communication_id | first_name | last_name | telephone |

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|

如果我理解正确,那么您只需要一个通讯ID,但想要所有收件人。 如果是这样的话:

SELECT cs.communication_id, cs.first_name ||' ' || cs.last_name AS recipient_name, cs.telephone
FROM communications_sent cs
WHERE cs.communication_id = (SELECT MAX(cs2.communication_id)
                             FROM communications_sent cs2
                            )
ORDER BY cs.communication_id DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM