2010-12-30 20 views
28

Faccio il mio join da una tabella farmanimale come questa. C'è un simile tavolo farmTotoolmysql GROUP_CONCAT duplicati

id | FarmID | animal 
1 | 1 | cat 
2 | 1 | dog 

Quando mi unisco mie tabelle in una vista, ottengo un risultato che assomiglia a questo

FarmID | animal | tool 
    1 | cat | shovel 
    1 | dog | shovel 
    1 | cat | bucket 
    1 | dog | bucket 

Ora, faccio GROUP BY FarmID, e group_concat (animale) e GROUP_CONCAT (strumento), ottengo

FarmID |  animals  |   tools 
    1 | cat,dog,cat,dog | shovel,shovel,bucket,bucket 

Ma quello che voglio veramente è un risultato che assomiglia a questo. Come posso farlo?

FarmID | animals | tools 
    1 | cat,dog | shovel,bucket 
+0

'group_concat (UNIQUE (' animal')) 'non funziona? –

risposta

92

È necessario utilizzare l'opzione DISTINCT:

GROUP_CONCAT(DISTINCT animal) 
+5

DISTINCT visualizza lo stesso contenuto di righe di uno. Per es. row1 = 'abc', row2 = 'def', row3 = 'abc'. Il GROUP_CONCAT (riga DISTINCT) risulterà abc, def che dovrebbe essere abc, def, abc. Qual è la soluzione oltre all'uso di DISTINCT? –

+1

Gah, grazie. Ho provato DISTINCT, ma non l'ho inserito all'interno del GROUP_CONCAT, non sono sicuro di cosa mi aspettassi di fare. Grazie. – Ryan