MariaDB中计算用户1与其他用户的Animal集合UNION数量
MariaDB计算用户1与其他用户Animal集合的UNION元素数
通用解决方案
无需逐个用户手动处理,通过CTE预取用户1的Animal集合,再关联其他用户数据统计即可,适用于多用户场景:
-- 预存用户1的所有Animal值 WITH user1_animals AS ( SELECT Animal FROM your_table WHERE `USER` = 1 ) SELECT ua.`USER` AS other_user, -- 统计去重后的并集元素数量 COUNT(DISTINCT COALESCE(ua.Animal, u1.Animal)) AS union_count FROM your_table ua -- 关联用户1的Animal集合,确保并集的所有元素都被覆盖 CROSS JOIN user1_animals u1 -- 排除用户1自身 WHERE ua.`USER` != 1 -- 按其他用户分组统计 GROUP BY ua.`USER`;
格式调整(输出用户ID | 数量样式)
如果需要直接输出你期望的格式,修改SELECT语句即可:
WITH user1_animals AS ( SELECT Animal FROM your_table WHERE `USER` = 1 ) SELECT CONCAT(ua.`USER`, ' | ', COUNT(DISTINCT COALESCE(ua.Animal, u1.Animal))) AS result FROM your_table ua CROSS JOIN user1_animals u1 WHERE ua.`USER` != 1 GROUP BY ua.`USER`;
内容的提问来源于stack exchange,提问作者Михаил Зуев
相关产品推荐
相关产品推荐

