如何在laravel中将Group By与Join表一起使用[重复]

Posted

技术标签:

【中文标题】如何在laravel中将Group By与Join表一起使用[重复]【英文标题】:How to use Group By with Join table in laravel [duplicate] 【发布时间】:2019-10-06 20:54:32 【问题描述】:

执行查询时,我收到如下错误消息。

$ads = DB::table('ads')
        ->join('adimages','adimages.ad_id','=','ads.id')
        ->select(
            'adimages.ad_id',
            'ads.ad_title',
            'ads.created_at',
            'ads.beds',
            'ads.baths',
            'ads.landmark',
            'ads.city',
            'ads.price',
            'adimages.photo'
        )
        ->groupBy('adimages.ad_id')
        ->get();

这是我遇到的错误。

SQLSTATE[42000]:语法错误或访问冲突:1055 'nekton.ads.ad_title' 不在 GROUP BY 中(SQL:选择 adimages.ad_idads.ad_title、@987654326 @.created_at, ads.beds, ads.baths, ads.landmark, ads.@9876543@35@, @987654337., @987654337., @987654336 photoads 内部连接 ​​adimages on adimages.ad_id = ads.id group by adimages.ad_id)

【问题讨论】:

nekton.ads.ad_title 来自哪里? 【参考方案1】:

在 Laravel 中,您需要在 database.php 文件中禁用严格键。请按照以下步骤操作

1. Open config/database.php
2. Find strict key inside mysql connection settings
3. Set the value to false

我想这会对你有所帮助。

【讨论】:

在 Laravel 配置中设置 "strict" => false 将禁用 ONLY_FULL_GROUP_BY,这似乎是问题的原因。这样做会因不当使用GROUP BY 语句而导致意外结果,例如来自不在分组数据集中的列中的MySQL is free to choose any value。另一种选择是使用SELECT ANY_VALUE(ads.ad_title) AS ad_title

以上是关于如何在laravel中将Group By与Join表一起使用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS SQL 中将 last_value 与 group by 结合使用?

如何在 LINQ 中将 Group By 与 Task<IEnumerable<Entity>> 一起使用

Spark Window 聚合与 Group By/Join 性能

如何通过 join 和 group by 在 C# Linq 中获取 Min?

如何在 Laravel 中禁用 only_full_group_by 选项

如何在 JOIN MySQL 中进行 GROUP BY 和 COUNT(*)