在 laravel 中对多列使用 distinct

Posted

技术标签:

【中文标题】在 laravel 中对多列使用 distinct【英文标题】:use distinct with multiple columns in laravel 【发布时间】:2017-11-07 00:26:48 【问题描述】:

我的表结构如下

date        seller  unit    price   total
05-06-17    abc     14      700     9800
05-06-17    pqr     12      600     7200
05-06-17    abc     10      520     5200
06-06-17    abc     10      600     6000
06-06-17    pqr     15      520     7800
06-06-17    pqr     16      520     8320

我需要获取类似的记录

1) 'date' = '05-06-2017', 'seller' = 'abc', 'total' = '15000'
2) 'date' = '05-06-2017', 'seller' = 'pqr', 'total' = '7200'
3) 'date' = '06-06-2017', 'seller' = 'abc', 'total' = '6000'
4) 'date' = '06-06-2017', 'seller' = 'pqr', 'total' = '16120'

我需要按日期从数据库中获取数据。 seller abcdate 05-06-2017 的表中有两个条目,所以我需要当天的total 用于seller abc 以及pqr 第二个date 的相同内容seller

【问题讨论】:

请详细描述您需要的数据。最后一行很难理解。 【参考方案1】:

当我们有多个包含相同数据的行需要在最终输出中合并在一起时,我们会使用 mySQLgroup by 功能。

所以在您的情况下,您可以使用 laravel 查询构建器以这种方式执行此操作。

 DB::table('orders')->select('date', 'seller', DB::raw('SUM(total) as total'))
    ->groupBy('seller')
    ->groupBy('date')
    ->get();

说明

DB::select('orders')->select('date', 'seller', DB::raw('SUM(total) as total')) 将查询我们数据库中的orders 表,然后获取我们提供的列,即date, seller and sum of total column as total

->groupBy('seller')->groupBy('date')会合并同一卖家在同一日期的多条记录。

->get(); 我们正在从查询中获取数据。

【讨论】:

【参考方案2】:

你可以试试

DB::table('orders')
    ->select('date', 'seller', DB::raw('SUM(total)'))
    ->groupBy('date')
    ->groupBy('seller')
    ->get();

【讨论】:

【参考方案3】:
$search = $request->search;

    $productSearch = Product::where('title', 'LIKE', '%'.$search.'%')
                    ->orWhere('description', 'LIKE', '%'.$search.'%')
                    ->get();

       return $produtcSearch;

【讨论】:

虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的回答添加解释并说明适用的限制和假设。【参考方案4】:

您可以像这样对多个列使用 distinct(在 Laravel 8 中检查过)。

Product::where('column_name','=', $searchTerm)
->distinct('column1','column2')
->get();

【讨论】:

以上是关于在 laravel 中对多列使用 distinct的主要内容,如果未能解决你的问题,请参考以下文章

hive mysql count distinct 多列

distinct 多列详解

我如何(或我可以)在多列上选择 DISTINCT?

多列的 MySQL Select 语句 DISTINCT

MySQL SELECT DISTINCT 多列

laravel 中 distinct() 的使用方法与去重