【问题标题】:How to convert mysql query to query builder for laravel 5?如何将 mysql 查询转换为 laravel 5 的查询生成器?
【发布时间】:2017-12-29 06:22:56
【问题描述】:

我正在尝试从 Customers 表中获取所有重复行 我想将以下 mysql 查询转换为查询生成器以在 laravel 5 中使用。我在文档中搜索但没有运气。

SELECT 
   CustomerName, 
   ContactName, 
   Customers.City 
FROM 
   Customers
INNER JOIN(
            SELECT 
               City 
            FROM Customers 
            GROUP BY City 
            HAVING COUNT(CustomerName) >1 ) temp 
ON Customers.City = temp.City;

在这里我在谷歌搜索并尝试这样,但是如果重复,这个查询生成器只显示一行。我只想要重复的每一行。

> $duplicates = DB::table('customers')
->select('CustomerName','City', DB::raw('COUNT(*) as `count`'))
->groupBy('CustomerName', 'City')
->having('count', '>', 1)
->get();

您的任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: mysql laravel-5 query-builder laravel-query-builder


    【解决方案1】:

    Laravel 支持 whereIn 中的子查询。

    $subQuery = DB::table('Customers')
        ->select('City')
        ->groupBy('City')
        ->havingRaw('count(*) > 1');
    
    $duplicates = DB::table('Customers')
        ->select('CustomerName','City')
        ->whereIn('City', $subquery)
        ->get();
    

    这不会创建相同的查询。但会返回相同的结果。

    【讨论】:

      【解决方案2】:

      只需删除合并查询的 groupBy

      【讨论】:

        猜你喜欢
        • 2015-12-13
        • 2023-03-07
        • 2019-03-09
        • 1970-01-01
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 2016-08-10
        • 2021-08-07
        相关资源
        最近更新 更多