如何重新排列 table 以获得 Mysql 中现有组合的列表?

How can I rearrange a table to get a list of the existing combinations in Mysql?

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

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

col1    col2
1       5
7       1
1       2

我想要一个新的 table(添加到现有的 table),我在其中翻转 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

希望这是有道理的。

感谢您的帮助!

使用union.

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

union 而不是 union all 因为当 table 中已经存在对称对时后者会给出重复的行(例如组合 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

如果您使用已交付的 table,则不必创建新的 table。 您可以使用一个查询而不是使用两个查询。

查询

SELECT 
    col1,
    GROUP_CONCAT(col2) AS col2
FROM
    (SELECT 
         col1, col2
     FROM 
         [TABLE]
     UNION  
     SELECT 
         col2, col1
     FROM 
         [TABLE]
    ) table_data
GROUP BY
   col1
ORDER BY 
   col1 ASC