mysql - GroupBy 在使用 leftjoin 时忽略 orderBy
问题描述
我有两张桌子。
rooms
与id
,title
chats
与id
, content
, room_id
,created_at
我的目标是模式中的 fetchrooms
和 orderBy 。这是一个简单的查询,但在 Laravel 中却让人头疼。我不能使用雄辩的 ORM 方式并在方法中进行排序。因此,我不得不使用.created_at
chats
desc
with
join
我的查询如下所示:
$items = $items->select("rooms.*")->join("chats", "chats.room_id", "=", "rooms.id")->orderBy("chats.created_at", "desc")->groupBy('rooms.id');
结果:
- 我在没有任何订单的情况下获取数据
created_at
。 - 删除
groupBy
将导致正确的顺序,但因为它缺少groupby
,所以房间将与它一样存在chats
。所以这不是一个很好的方法。
我错过了什么?如果我需要包含其他信息,请在评论中告诉我。
解决方案
就像评论说的那样,我应该aggregate
在使用 groupby 函数时在查询中使用一个函数。基本上,它看起来像这样
$items = $items->select("rooms.*")
->selectRaw("max(chats.created_at) as latest_created_at")
->join("chats", "chats.room_id", "=", "rooms.id")
->orderBy("latest_created_at", "desc")
->groupBy('rooms.id');
然后,它将被正确订购。我会离开线程,也许有人会使用与我相同的笨拙搜索关键字并看到这个问题:)
推荐阅读
- html - 如何使 BootStrap“carousel-item”类中的 HTML SVG 代码在移动屏幕和小屏幕中响应?
- python - 获取 RelatedObjectDoesNotExist 错误访问自定义表单上的字段
- python - 在数据框中切片对象类型的值
- pythonanywhere - 更新为我的 python-Twitter-bot 提供输入的 .csv 文件
- python - Python Pandas 根据时间从列中选择值
- javascript - 从连接表中选择计数
- image - Nuxt 嵌套链接导致图像 404
- node.js - AWS Lambda GitLab CI/CD 部署包大小比从我的本地环境部署大得多
- node.js - 通过 nvm 安装时,节点库在 MacOS 上重新编译很慢
- java - 为什么不可变类中的可变对象可以访问?