2017-10-16 9 views
0

Comment puis-je réorganiser une table pour obtenir une liste des combinaisons existantes (dans les deux sens) dans Mysql?Comment réorganiser une table pour obtenir une liste des combinaisons existantes dans Mysql?

Par exemple, j'ai une table avec deux colonnes

col1 col2 
1  5 
7  1 
1  2 

Je veux obtenir une nouvelle table (ajoutée sur la table existante) où je feuillette col2 et col1.

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

Ceci me permet de voir toutes les valeurs pour chaque nombre, en regardant les deux directions.

Comme

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

Espérons que cela a du sens.

Merci pour l'aide!

+3

'select col1, col2 de l'union onglet tous sélectionnez col2, col1 de tab' –

Répondre

0

Utilisez union.

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

union est utilisé au lieu de union all parce que ce dernier donnerait des lignes en double quand une paire symétrique existe déjà dans la table (par exemple la combinaison 1,55,1)

Utilisez ensuite group_concat.

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

Merci! Cela a fonctionné en renvoyant le résultat que je cherchais. –

0

Si vous utilisez sur une table livré vous ne devez pas créer une nouvelle table. Et vous pouvez utiliser une requête au lieu d'utiliser deux requêtes.

Recherche

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

Merci pour votre aide! Ceci est également correct –