0
我有這個查詢來獲取兩個用戶之間的最後一條消息。MySQL複雜查詢,用戶對話
SELECT f.*
FROM
(
SELECT *
FROM messages a
WHERE (LEAST(a.sender, a.receiver), GREATEST(a.sender, a.receiver), a.timestamp)
IN (
SELECT LEAST(b.sender, b.receiver) AS x,
GREATEST(b.sender, b.receiver) AS y,
MAX(b.timestamp) AS msg_time
FROM messages b
GROUP BY x, y
)
) f
WHERE :user_id IN (f.sender, f.receiver)
ORDER BY f.timestamp DESC
我在這裏得到了它,它對我來說有點複雜。
如果:user_id
未刪除對話,我需要修改它才能獲取最後一條消息。
該表有4個重要字段:sender, receiver, sender_deleted, receiver_deleted
。
當用戶想要刪除的對話,我運行一個查詢到已刪除的字段設置爲1
表的實施例,其中4用戶已經刪除了談話:
sender receiver sender_deleted receiver_deleted message
4 17 1 0 user 4 to 17 message
17 4 0 1 user 17 to 4 message
我需要修改上述查詢,如果:user_id = 4
它返回空,但如果:user_id = 17
返回最後發送的消息。
我希望我解釋清楚我想做什麼。
我做了一個快速測試,而且似乎工作,我想要的。謝謝!我瘋了 – Fr0z3n 2013-05-11 23:30:55