2017-10-16 119 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

謝謝你的幫助! 這也是正確的 –