mysql - 通过分组 Eloquent 地找到具有最大值的行

标签 mysql laravel orm eloquent aggregate-functions

您好,我在这里有问题和解决方案 http://dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html这是找到具有特定列最大值的行,并按其他值分组。

我的问题是如何将下面的查询转换为 Eloquent 格式?

SELECT s1.article, dealer, s1.price
    FROM shop s1
    JOIN (
      SELECT article, MAX(price) AS price
      FROM shop
      GROUP BY article) AS s2
ON s1.article = s2.article AND s1.price = s2.price;

谢谢。

最佳答案

使用原始构建器,如果使用 eloquent,则可以在下面使用,只需删除表名称并替换为您的模型实例

DB::table(DB::raw('shop as s1'))
   ->join(
       DB::raw('(SELECT article, MAX(price) AS price FROM shop GROUP BY article) as s2'), 
     function($query) {
       $query->on('s1.article', '=', 's2.article')
             ->on('s1.price', '=', 's2.price');
     })->get();

关于mysql - 通过分组 Eloquent 地找到具有最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40991960/

相关文章:

mysql - SQL 按日期和时间排序

php - Laravel - 在 Jobs 中使用图像干预。 imagettfbbox 错误

php - Laravel 5 - 是否可以在不使用 Eloquent 或 Artisan 的情况下使用 MySQL 数据库?

mysql - Docker-工具箱 & Win7 |卷选择权限被拒绝

php - 在特定 id 之后插入第二列到 csv

使用 `in` 子句的 C# 参数化查询 MySQL

php - Laravel 如何在特定页面显示后清除 session

java - hibernate ,别名

Hibernate - 为什么使用多对一来表示一对一?

c# - Fluent Nhibernate QueryOver 仅按日期获取记录而没有时间