mysql - 如何重新排列表以获取 Mysql 中现有组合的列表?

标签 mysql sql combinations transformation

如何重新排列表格以获取 Mysql 中现有组合(双向)的列表?

例如,我有一个包含两列的表格

col1    col2
1       5
7       1
1       2

我想要一个新表(添加到现有表中),在其中翻转 col2 和 col1。

col1    col2
1       5
7       1
1       2
5       1
1       7
2       1

这使我可以在向两个方向查看时看到每个数字的所有值。

喜欢

1: 5, 2, 7
2: 1
5: 1
7: 1

希望这是有道理的。

感谢您的帮助!

最佳答案

使用联合

select col1,col2 from tbl
union
select col2,col1 from tbl
使用

union 而不是 union all,因为当表中已存在对称对时,后者会给出重复行(例如组合 1, 5 5,1)

然后使用group_concat

select col1,group_concat(col2)
from (select col1,col2 from tbl
      union
      select col2,col1 from tbl) t
group by col1

关于mysql - 如何重新排列表以获取 Mysql 中现有组合的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778080/

相关文章:

mysql - 在查询中使用已选择的单元格

mysql - 在使用 GROUP BY 的同时为具有不止一层的用户连接层?

sql - 在 dbplyr SQL 查询中的 string::str_detect 中使用带有正则表达式的变量

python - 人员列表中 2 人或 3 人的团体的所有组合 [Python]

python - 如何在具有有限元值的二维数组中查找缺失的组合/序列

php - 基于一组可变的比较点检索 MySQL 记录

php - 除了作为 blob 之外,是否有更节省空间的方式将图像存储在数据库中?

c# - 计算可能的组合数量 - C#

sql - 使用row_number从查询中获取@@ rowcount的有效方法

sql - 从一张表中选择与另一张表匹配的条件?