2017-10-16 60 views
0

如何重新排列表以获取Mysql中现有组合(在两个方向上)的列表?如何重新排列表以获取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 

希望这是有道理的。

感谢您的帮助!

+3

'从tab'选择COL1,COL2从选项卡联盟的所有选择COL2,COL1 –

回答

0

使用union

select col1,col2 from tbl 
union 
select col2,col1 from tbl 

union代替union all因为后者会给重复行当对称配对在表中已经存在(例如组合1,55,1

然后使用group_concat

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

谢谢!这工作在返回我正在寻找的结果。 –

0

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

查询

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 
+0

谢谢你的帮助! 这也是正确的 –