繁体   English   中英

MySQL:获取所有组合

[英]MySQL: Get all combinations

鉴于我有一个用户表用户

用户身份 名称
1个 鲍勃
2个 亚当
3个 查理

现在我想获得一个或两个用户的所有组合:

用户1 用户2
鲍勃 NULL
鲍勃 亚当
鲍勃 查理
亚当 NULL
亚当 鲍勃
亚当 查理
查理 NULL
查理 鲍勃
查理 亚当

假设我只想得到两人的组合,我就可以简单地做这样的事情:

SELECT * FROM users u1 
LEFT JOIN users u2 on u1.id!=u2.id

但是,我想包含只有一个用户的组合。 我怎样才能得到想要的结果?

使用自我CROSS JOIN

SELECT u1.name AS user1,
       NULLIF(u2.name, u1.name) AS user2
FROM users u1 CROSS JOIN users u2
ORDER BY u1.user_id, NULLIF(u2.user_id, u1.user_id);

请参阅演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM