0
我有消息的表:通過對Postgres裏選擇不同的最後一封郵件
我只需要一個最後的日期和時間的交談兩個用戶之間。這裏是我做的:
select distinct on (user_from, user_to)
*
from messages
這裏是我所得到的:
我確實在兩個用戶之間得到了一條獨特的對話線,但它不是最後一條。
我應該如何選擇兩個用戶之間最後一次唯一的對話?
編輯:預期輸出:
我有消息的表:通過對Postgres裏選擇不同的最後一封郵件
我只需要一個最後的日期和時間的交談兩個用戶之間。這裏是我做的:
select distinct on (user_from, user_to)
*
from messages
這裏是我所得到的:
我確實在兩個用戶之間得到了一條獨特的對話線,但它不是最後一條。
我應該如何選擇兩個用戶之間最後一次唯一的對話?
編輯:預期輸出:
你可以做到這一點使用Window Functions
SELECT *
FROM
(select *, rank() OVER (PARTITION BY date, user_from,user_to ORDER BY time desc) AS pos
FROM messages
) AS msg
WHERE pos = 1
我強烈建議你要注意使用PostgreSQL的令牌作爲列名!
這是我如何做的:
SELECT DISTINCT ON (user_from, user_to) *
FROM messages
ORDER BY user_from, user_to, date+time DESC
不工作。它輸出三行(應該是四個),並且它們不是唯一的 –
@PostoTrader可以通過添加除了要輸出的東西之外的輸出來更新您的問題嗎? – Houari
@ProstoTrader你想每個日期的兩個用戶之間的最後一條消息?如果是這樣,請看我最新的答案。 – Houari