![](/img/trans.png)
[英]How to get the latest records of the multiple values of same column in 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.