Search within GROUP_CONCAT
我正在根据行的大结果执行此 SQL
SELECT 用户 ID,group_concat(locationid)
来自 user_location
按用户标识分组
有 group_concat(locationid) = 10
|
1
2 3 4 5 6 7 8 9 10 |
userid locationid
——-— ———- 894801 10,10,10,10,10,10,10,10,10,10,10,10 898356 10,10,11,10 900424 10,10,13,12,12,12,12 902123 10 904910 10,10 907922 10,10,10 912587 10,12,12 930319 10 |
现在,我只想要值 = 10 且没有其他值的那些 locationid 行
期望的输出:
|
1
2 3 4 5 6 7 |
userid locationid
——-— ———- 894801 10,10,10,10,10,10,10,10,10,10,10,10 902123 10 904910 10,10 907922 10,10,10 930319 10 |
我探索并找到了 find_in_set() 但在这里没有用
不要使用 group_concat() 的结果。只需使用一个简单的 having 子句:
|
1
2 3 4 |
SUM() 计算等于 10 的值的数量。 = COUNT(*) 简单地说都是 10。
您也可以通过确保没有任何值不是 10 来做到这一点:
- 它的要求有点不同。它与您的答案不符。
- @MySQLRockstar 。 . .我知道了。我最初误解了这个问题。
- 谢谢这个工作SELECT userid, locationid FROM abpm_user_plan_mapping GROUP BY userid HAVING SUM(locationid = 10) = COUNT(*)
|
1
2 |
试试这个..它工作正常
来源:https://www.codenong.com/33609471/
