0
我正在使用現有的無法修改的數據庫結構的聊天系統。在同樣的結果下重複mysql結果
我試圖獲取特定用戶離線時收到的消息(假設用戶是我)。
目前,我的查詢給我的結果,如:
[ { username: 'Chico',
message: 'chicoMessage1',
sentBy: 23 },
{ username: 'rep',
message: 'repMessage1',
sentBy: 59 },
{ username: 'Chico',
message: 'chicoMessage2',
sentBy: 23 },
{ username: 'rep',
message: 'repMessage2',
sentBy: 59 } ]
上述結果意味着用戶「奇科」給我發了2個消息,並且用戶「代表」送我2爲好。我們看到消息的內容以及消息發送者的ID。
我希望得到的最終結果,因此我可以高效地使用它,將每個用戶名的上面的內容分組到相同的用戶名下。
所以基本上類似的東西,將是一件好事:
[ { username: 'Chico',
messages: ['chicoMessage1', 'chicoMessage1' ],
sentBy: 23 },
{ username: 'rep',
messages: ['repMessage1', 'repMessage2' ],
sentBy: 59 } ]
我能做到這與MySQL?這裏的查詢我現在(的結果在前面提到的結果):
SELECT tusers.username, messages.message, messages.sentBy
FROM messages
JOIN offlineconversations
ON messages.messageID = offlineconversations.messageID
JOIN tusers
ON tusers.id = messages.sentBy \
WHERE offlineconversations.userID = 100;
的表格看起來像:
tusers
ID |用戶名|密碼
消息
MESSAGEID |消息| sentBy
offlineconversations
用戶ID | messageID
MySQL可以實現我想要的嗎?如果不是,你會怎麼做(在JS中)?
謝謝
我也有在'messages'表 'createdAt' 時間戳列,我怎麼可能用它來訂購從最新到最舊的郵件? –
使用'GROUP_CONCAT(messages.message ORDER BY createdAt DESC)' – krokodilko
真棒,謝謝!我添加了SEPARATOR'-_-_-',然後通過JS將該字符串與該分隔符分開,以創建一個消息數組。有沒有一種更理想的方式直接從MySQL中獲得該數組?謝謝 –