我需要此任務的幫助: 我在MsSql數據庫中有一張表,用於存儲消息間用戶消息。我需要一個查詢來爲每個用戶對話選擇最後一條消息(WhatApp就像用戶的對話列表)。sql查詢通過對話將數據分組
表結構(x是消息ID,GUID,並且是針對每個消息唯一的,txtMsg是文本消息):
| messageId | fromUserId | toUserId | Message | sentDate |
| x | 1 | 2 | txtMsg | 1.1.2016 1:00:00 |
| x | 1 | 2 | txtMsg | 1.1.2016 1:00:01 |
| x | 1 | 2 | txtMsg | 1.1.2016 1:00:02 |
| x | 2 | 1 | txtMsg | 1.1.2016 1:00:03 |
| x | 3 | 1 | txtMsg | 1.1.2016 1:00:04 |
| x | 4 | 1 | txtMsg | 1.1.2016 1:00:05 |
| x | 2 | 3 | txtMsg | 1.1.2016 1:00:06 |
| x | 2 | 4 | txtMsg | 1.1.2016 1:00:07 |
| x | 2 | 3 | txtMsg | 1.1.2016 1:00:08 |
| x | 1 | 5 | txtMsg | 1.1.2016 1:00:09 |
| x | 3 | 1 | txtMsg | 1.1.2016 1:00:10 |
| x | 2 | 4 | txtMsg | 1.1.2016 1:00:11 |
| x | 2 | 5 | txtMsg | 1.1.2016 1:00:12 |
| x | 1 | 2 | txtMsg | 1.1.2016 1:00:13 |
預期結果例如,對於ID爲用戶= 1( sentDate是最新的日期):
| x | 1 | 2 | txtMsg | 1.1.2016 1:00:13 |
| x | 3 | 1 | txtMsg | 1.1.2016 1:00:10 |
| x | 4 | 1 | txtMsg | 1.1.2016 1:00:05 |
| x | 1 | 5 | txtMsg | 1.1.2016 1:00:09 |
什麼sql查詢會創建這樣的結果?
謝謝!
後來編輯: 我加入這裏sqlfiddle例如:
http://sqlfiddle.com/#!3/6ffbe/15
這裏的想法是按固定順序爲'from'和'to'設置ID。例如,您可以使用'CASE WHEN ... END'構建。 –