You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何获取用户表的单人及两人所有组合?

获取单人及两人的所有用户组合

现有用户表(users)

user_idname
1Bob
2Adam
3Charlie

目标结果

user1user2
BobNULL
BobAdam
BobCharlie
AdamNULL
AdamBob
AdamCharlie
CharlieNULL
CharlieBob
CharlieAdam

实现代码

原有的自连接语句只能得到两人组合,要包含单人(user2为NULL)的情况,直接用UNION ALL把单人组合和两人组合合并即可:

-- 生成所有单人组合(user2 为 NULL)
SELECT u1.name AS user1, NULL AS user2
FROM users u1
UNION ALL
-- 生成所有两人组合(user1 和 user2 不是同一个用户)
SELECT u1.name AS user1, u2.name AS user2
FROM users u1
JOIN users u2 ON u1.user_id != u2.user_id

说明

  • 第一部分查询会为每个用户生成一条user2为NULL的记录,对应单人组合;
  • 第二部分通过自连接筛选出所有user_id不同的用户对,得到所有两人组合;
  • 使用UNION ALL而非UNION是因为两部分结果没有重复,无需去重,效率更高。

内容的提问来源于stack exchange,提问作者Thomas S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:01:00