2010-12-30 43 views
28

Tôi thực hiện việc tham gia từ một bảng farmtoanimal như thế này. Có một bảng farmTotool tương tựmysql GROUP_CONCAT trùng lặp

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

Khi tôi tham gia bàn của tôi trong một cái nhìn, tôi nhận được một kết quả trông như thế này

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

Bây giờ, tôi làm GROUP BY FarmID, và GROUP_CONCAT (động vật) và GROUP_CONCAT (công cụ), tôi nhận được

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

Nhưng, điều tôi thực sự muốn là kết quả trông như thế này. Tôi làm nó như thế nào?

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

'GROUP_CONCAT (UNIQUE ('animal'))' không làm việc? –

Trả lời

92

Bạn cần phải sử dụng DISTINCT tùy chọn:

GROUP_CONCAT(DISTINCT animal) 
+5

DISTINCT hiển thị cùng một hàng nội dung dưới dạng một. Ví dụ: row1 = 'abc', row2 = 'def', row3 = 'abc'. GROUP_CONCAT (hàng DISTINCT) sẽ cho kết quả abc, def được cho là abc, def, abc. Giải pháp khác ngoài việc sử dụng DISTINCT là gì? –

+1

Gah, cảm ơn bạn. Tôi đã cố gắng DISTINCT, nhưng không đặt nó bên trong GROUP_CONCAT, không chắc chắn những gì tôi mong đợi để làm. Cảm ơn. – Ryan

Các vấn đề liên quan