mysql - SQL 中的排列

标签 mysql sql combinations permutation

我遇到了以下问题,但找不到解决方案(即使在网上搜索了很多次之后)。

我有一张包含项目和相关员工的表格(大约 100.000 个条目):

+------------+-------------+  
| Project ID | Employee ID |  
+------------+-------------+  
| 1          | 1           |  
| 1          | 2           |  
| 1          | 3           |  
| 2          | 1           |  
| 2          | 2           |  
| 2          | 3           |  
| 3          | 1           |  
| 3          | 2           |  
| ...        | ...         |

是否可以找到每个项目两名员工的所有不同组合并将其写入新表?

期望的输出:

Project ID | Employee ID 1 | Employee ID 2  
1          |1              |2  
1          |1              |3  
1          |2              |3  
2          |1              |2  
2          |1              |3   
...

谢谢!

最佳答案

您使用自连接执行此操作:

select pe1.projectid, pe1.employeeid as employeeid1, pe2.employeeid as employeeid2
from pe pe1 join
     pe pe2
     on pe1.projectid = pe2.projectid and pe1.employeeid < pe2.employeeid;

使用insertcreate table as 将其放入新表中。

关于mysql - SQL 中的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548133/

相关文章:

mysql - mysql concat 可以只接受两个参数吗

sql - 删除名称中多余的中间空格 - SQL

algorithm - 按字典顺序生成 k 组合

flash - 查找数组中的所有系列

mysql - 对大于整数的结果使用 .where 条件

PHP/MySQL - 允许用户为 CMS 创建自定义表单字段

mysql - MYSQL是否可以记录错误语句?

php - 从其他值中选择一个值

sql - 查找尚未在表中的下一个空闲时间戳

python - 如何从多个列表的每个唯一组合创建 pandas 数据框?