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

时间:2017-12-12 20:14:06

标签: sql postgresql postgresql-9.1

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

| 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|

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要一个通信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