我有兩個表使用ORDER BY,GROUP BY和多選擇一起
表用戶
uid | username
----------------
1 | brandon
2 | john
3 | nicole
表private_msgs
id | from | to | message | time
-------------------------------------------
1 | 1 | 2 | hi sister | 100
2 | 1 | 3 | hi brother | 300
3 | 1 | 2 | hi again! | 400
4 | 2 | 3 | lolz message | 600
(列時間是一個實際的時間戳,我只是做了這個例子很簡單)
'from'是用戶的uid
「到」是用戶的UID
我想從已發送到特定用戶的所有用戶得到最新消息
在這種情況下,特定的用戶是
$logged_id = 2;
結果應返回與ID行= 3
查詢我到目前爲止
SELECT private_msgs.*, users.username FROM `private_msgs`, `users`
WHERE private_msgs.to=$logged_id AND users.uid = private_msgs.from
INNER JOIN (
SELECT
from, max(time) as latest
FROM private_msgs
GROUP BY private_msgs.from
) r ON private_msgs.time = r.latest AND private_msgs.from = r.from
ORDER BY time DESC");
不過,我收到錯誤
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN (SELECT from, max(time) as latest FROM private_msgs ' at line 3
這個問題被問了很多。 – Strawberry