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