嗨,我很难得到这个场景的正确查询。如何让所有用户都有3个客户。客户表:
userid | customerid ______________________ 1 | 10 1 | 11 1 | 12 2 | 13 2 | 22 2 | 23 1 | 24 3 | 50
查询中的预期结果应该是id为1和2的用户。我试过《拉雷维尔》里的“whereraw”,但我就是搞不懂。
6mzjoqzu1#
使用groupby()和havingraw()
User::select(['user_id']) ->groupBy('user_id') ->havingRaw('COUNT(DISTINCT customer_id) >= 3') ->get();
这将返回具有3个或更多客户id的用户id
ffscu2ro2#
你可以用 GROUP BY 使用条件筛选 HAVING 条款:要查找某个用户的客户总数,我们可以使用 COUNT(DISTINCT customer_id) 计算唯一的客户数。
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 相反,在这种情况下。
(user_id, customer_id)
UNIQUE
COUNT(*)
>= 3
2条答案
按热度按时间6mzjoqzu1#
使用groupby()和havingraw()
这将返回具有3个或更多客户id的用户id
ffscu2ro2#
你可以用
GROUP BY
使用条件筛选HAVING
条款:要查找某个用户的客户总数,我们可以使用
COUNT(DISTINCT customer_id)
计算唯一的客户数。注:
如果表结构确保
(user_id, customer_id)
组合是UNIQUE
; 那你可以用COUNT(*)
而不是COUNT(DISTINCT customer_id)
如果您正在寻找至少有三个客户的用户,那么您可以使用>= 3
相反,在这种情况下。