我想根据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