Mysql GroupBy在使用leftjoin时忽略orderBy
我有两张桌子Mysql GroupBy在使用leftjoin时忽略orderBy,mysql,laravel,Mysql,Laravel,我有两张桌子 房间带有id,标题 与id,内容,房间id,在 我的目标是在desc模式下在chats的中获取rooms和创建orderBy。这是一个简单的查询,但却让拉威尔感到头痛。我不能使用雄辩的ORM方式,用方法在中进行排序。因此,我不得不使用连接 我的查询如下所示: $items=$items->select(“聊天室”。”->join(“聊天室”、“聊天室id”、“聊天室id”)->orderBy(“聊天室创建地址”、“描述”)->groupBy(“聊天室id”) 结果: 我在处获取创建
房间
带有id
,标题
与id
,内容
,房间id
,在
我的目标是在desc
模式下在chats
的中获取rooms
和创建orderBy。这是一个简单的查询,但却让拉威尔感到头痛。我不能使用雄辩的ORM方式,用
方法在中进行排序。因此,我不得不使用连接
我的查询如下所示:
$items=$items->select(“聊天室”。”->join(“聊天室”、“聊天室id”、“聊天室id”)->orderBy(“聊天室创建地址”、“描述”)->groupBy(“聊天室id”)代码>
结果:
我在
处获取创建的数据时没有任何订单
删除groupBy
将产生正确的顺序,但由于缺少groupBy
,该聊天室将与它的聊天室一样多。所以这不是一个好方法
我错过了什么?如果我需要包含其他信息,请在注释中告诉我。正如注释所述,我应该在查询中使用聚合
函数,同时使用groupby函数。基本上是这样的
$items=$items->选择(“房间。*”)
->选择RAW(“最大(聊天记录创建时间)为最新创建时间”)
->加入(“chats”、“chats.room_id”、“=”、“rooms.id”)
->orderBy(“最新创建时间”,“描述”)
->groupBy('rooms.id');
然后,它将被正确地订购。我将离开该线程,也许有人会使用与我相同的笨拙搜索关键字,并看到以下问题:)我使用了leftJoin和join,两者的结果相同,尽管我认为在这种情况下使用leftJoin更合理,因为我只对左边的表rooms
感兴趣。按列分组后,没有其他列在排序上有意义-此类列中的聚合函数仅有意义。您能给出一个示例方法吗?我已经找到了。我会发布我的答案。