我想根據to_number和from_number並創建日期/時間來選擇2個用戶之間的最近記錄。SQL查詢分組消息對話
找到記錄後,顯示消息和時間戳。只要to_number或from_number具有相同的配對,那麼這就是我要顯示的消息。
我真的很難找到從/到或從具有相同數字組合和以前沒有列出的記錄中找到唯一的OR。
我的數據:
Messages table:
"id","to_number","from_number","message","created_at","dm_user_id"
"1","7325551212","5705551234","new update","2011-12-17T11:26:33-05:00","1"
"2","5705551234","3015551212","next update","2011-12-17T11:26:53-05:00","1"
"3","6095559876","4695551212","trying messages.","2011-12-19T19:20:47-05:00","2"
"4","5705551234","4155551212","did i get this?","2011-12-19T20:04:40-05:00","1"
"5","9075551212","5705551234","Where did this go?","2011-12-19T20:05:51-05:00","1"
"6","9075551212","5705551234","testing","2011-12-19T20:12:53-05:00","1"
"7","3015551212","5705551234","Are you here ","2011-12-19T20:13:34-05:00","1"
"8","6175554567","4695551212","test from app","2011-12-19T22:51:32-05:00","2"
從上面的數據,我只想以下記錄,列出最新到最舊。
注:並非所有記錄都將被返回,因爲存在組合的重複。例如,id 2和id 7是相同2個數字之間的消息。只有最近將被退回,ID 7
另一個例子是ID 5和ID 6 - 他們都是向/從同一個號碼,只有最近返回,ID 6:
爲dm_user_id = 1
"3015551212", "Hello", "2011-12-19T20:13:34-05:00" # id 7
"9075551212", "testing", "2011-12-19T20:12:53-05:00" # id 6
"4155551212", "did i get this?", "2011-12-19T20:04:40-05:00" # id 4
"7325551212", "new update", "2011-12-17T11:26:33-05:00" # id 1
爲dm_user_id = 2
"6175554567", "test from app", "2011-12-19T22:51:32-05:00" # id 8
"6095559876", "trying messages.", "2011-12-19T19:20:47-05:00" # id 3
我想GROUP BY和DISTINCT的不同組合,但沒有得到我在尋找的結果。
select * from messages where dm_user_id = 1
group by to_number, from_number
select * from (
select DISTINCT to_number, from_number dm_user_id
from messages) where dm_user_id = 1
你有一個用戶表有'dm_user_id'和'phone_number'作爲關係,或者這個關係只存在於'messages'表中嗎? – Eric 2011-12-30 16:56:40
@Eric我有另一個表dm_users。該表具有''id「,」email「,」hashed_password「,」salt「,」created_at「,」permission_level「,」username「,」phone_number「 – chaddow 2011-12-30 17:13:22
您是否有能力在此數據庫中創建視圖? – 2011-12-30 22:18:48