[英]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.