【问题标题】:Where Raw query on Laravel?Laravel 的原始查询在哪里?
【发布时间】:2019-04-27 06:04:12
【问题描述】:

您好,我很难为这种情况找到正确的查询。

如何让所有用户拥有 3 个客户。

客户表:

userid  | customerid
______________________

1       | 10
1       | 11
1       | 12
2       | 13
2       | 22
2       | 23
1       | 24
3       | 50

查询中的预期结果应该是 id 为 1 和 2 的用户。

我在 'Laravel' 中尝试过 'whereRaw' 但我就是不明白。

【问题讨论】:

    标签: mysql laravel


    【解决方案1】:

    您可以将GROUP BY 与使用HAVING 子句的条件过滤一起使用:

    要找到一个用户的客户总数,我们可以使用COUNT(DISTINCT customer_id) 来计算唯一客户数。

    SELECT user_id
    FROM your_table
    GROUP BY user_id
    HAVING COUNT(DISTINCT customer_id) = 3 
    

    注意:

    • 如果表结构保证(user_id, customer_id)组合为UNIQUE;那么你可以使用COUNT(*) 而不是COUNT(DISTINCT customer_id)
    • 如果您正在寻找具有至少三个客户的用户,那么您可以在条件中使用>= 3

    【讨论】:

      【解决方案2】:

      使用 groupBy() 和 havingRaw()

      User::select(['user_id'])
      ->groupBy('user_id')
      ->havingRaw('COUNT(DISTINCT customer_id) >= 3')
      ->get();
      

      这将返回具有 3 个或更多客户 ID 的用户 ID

      【讨论】:

        猜你喜欢
        • 2015-07-29
        • 2012-10-29
        • 1970-01-01
        • 2016-07-30
        • 2018-03-31
        • 2021-07-27
        • 1970-01-01
        • 2018-04-28
        • 2014-11-30
        相关资源
        最近更新 更多