laravel上的原始查询在哪里?

wnvonmuf  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(259)

嗨,我很难得到这个场景的正确查询。
如何让所有用户都有3个客户。
客户表:

userid  | customerid
______________________

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

查询中的预期结果应该是id为1和2的用户。
我试过《拉雷维尔》里的“whereraw”,但我就是搞不懂。

6mzjoqzu

6mzjoqzu1#

使用groupby()和havingraw()

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

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

ffscu2ro

ffscu2ro2#

你可以用 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 相反,在这种情况下。

相关问题