我知道以前也有類似的問題,但沒有一個具有相同的條件,他們的答案對這種情況不起作用。從每次對話中獲取最後一條消息
包含的消息的表看起來像這樣:
id | owner_id | recipient_id | content | created
1 | 1 | 2 | Hello | 2015-12-08 20:00
2 | 2 | 1 | Hey | 2015-12-08 20:10
3 | 3 | 1 | You there? | 2015-12-08 21:00
4 | 1 | 3 | Yes | 2015-12-08 21:15
5 | 4 | 1 | Hey buddy | 2015-12-08 22:00
而且我們說,我查詢用戶ID 1的談話,預期的結果是:
id | owner_id | recipient_id | content | created
5 | 4 | 1 | Hey buddy | 2015-12-08 22:00
4 | 1 | 3 | Yes | 2015-12-08 21:15
2 | 2 | 1 | Hey | 2015-12-08 20:10
我試過很多的組合使用,聯合和子查詢,但沒有一個給出了預期的結果。
我正在尋找MySQL中的答案,但是這將用於CakePHP 2開發的項目中,所以如果有一個Cake特定的方法來做到這一點,那就太棒了。
這是我嘗試過的一個查詢,但它不工作。我相信甚至沒有接近我所需要的。
SELECT
IF (owner_id = 1, recipient_id, owner_id) AS Recipient,
(
SELECT
content
FROM
messages
WHERE
(owner_id = 1 AND recipient_id = Recipient )
OR
(owner_id = Recipient AND recipient_id = 1)
ORDER BY
created DESC
LIMIT 1
)
FROM
messages
WHERE
owner_id = 1
OR
recipient_id = 1
GROUP BY
Recipient;
表中是否有唯一鍵? – Timekiller
是的,我更新了這個問題(拼錯了幾個ID)。 – Camilo
您是否可以包含您在問題中嘗試過的SQL查詢? – summea