订购工作不使用GROUP BY
我试图得到消息列表后如预期,通过分组from_user_id
和to_user_id
所以他们看起来像下面的截图。只是,我的问题是他们似乎没有按照最近的顺序。订购工作不使用GROUP BY
这里展示他们如何看截图:
查询: 选择
select
concat(to_user_id, from_user_id) as group_by,
pm.*
from personal_messages pm
where (to_user_id = 1265) or (from_user_id = 1265)
group by group_by
order by id desc
表结构:
您需要日期值添加到查询:
select concat(to_user_id, from_user_id) as group_by,
max(updated_at) as max_updated_at
from personal_messages pm
where (to_user_id = 1265) or (from_user_id = 1265)
group by group_by
order by max_updated_at desc
的日期值可以是created_at
或updated_at
,这取决于你的实际需求。你必须虽然使用像MAX
聚合函数,因为无论这些领域出现的GROUP BY
子句。
你可以做'ORDER BY 2 DEC'也 –
@AkshayKhale这是个人喜好的问题,我认为。我个人并不觉得这种语法可读。 –
@GiorgosBetsos谢谢。我设法稍微调整以获得我想要的结果。我会把它标记为可以回答的。 – Ben
既然你标记Laravel,你为什么不跟口才试试? –
@让PhilippeMurray我使用雄辩在我的应用程序,但使用正常的SQL查询来尝试并获得最好的结果,然后我将其转换成雄辩:) – Ben
我不知道你的确切结构,但'PersonalMessage: :其中( 'to_user_id',1265) - > orWhere( 'from_user_id',1265) - >排序依据( 'created_at', '降序') - >获得();'应该做的伎俩。 –