2011-12-01 37 views
8

Tôi hiện đang có một số sql mang thẻ trở lại. họ cần phải có id riêng biệt, nhưng họ không .... vì vậy dữ liệu hiện tại của tôi cũng giống như:mysql chọn các hàng riêng biệt thành một cột danh sách được phân tách bằng dấu phẩy

Microsoft | GGG | 1 | 167 
Microsoft | GGG | 1 | 2 
Microsoft | GGG | 1 | 1 

gì tôi muốn làm là chỉ có một hàng trở lại với cột cuối cùng nối vào một phân danh sách như:

Microsoft | GGG | 1 | 167, 2, 1 

Tôi đang sử dụng mySQL 5 cho việc này.

+0

Tôi không biết những gì bạn đang yêu cầu trong lá cờ của bạn. Nếu bạn đặt câu hỏi sai, sau đó đánh giá (các) câu trả lời được cung cấp, xem câu trả lời có được trả lời cho câu hỏi mà bạn đã hỏi ở đây hay không và đóng câu hỏi bằng cách chọn câu trả lời đúng. Sau đó, bạn có thể hỏi câu hỏi * thực * của mình. – Will

Trả lời

21

Sử dụng GROUP_CONCAT() cho điều này, với một GROUP BY bao gồm ba cột khác:

SELECT 
    name, -- Microsoft 
    other, -- GGG 
    other2, -- 1 
    GROUP_CONCAT(id) AS ids 
FROM tbl 
GROUP BY name, other, other2 
+0

Và trong trường hợp 'ids' là một tập hợp lớn, đừng quên đặt giá trị đủ lớn cho:' SET SESSION group_concat_max_len = 1000000; ' – bishop

+0

Điều này không đưa ra giá trị riêng biệt. – geoidesic

+0

@geoidesic Không chắc chắn nơi bạn muốn nói. Câu hỏi không yêu cầu các giá trị riêng biệt, nhưng nếu bạn đọc [tài liệu 'GROUP_CONCAT()' (https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html# function_group-concat), bạn sẽ thấy nó hỗ trợ từ khóa 'DISTINCT' để loại bỏ giá trị trả về chuỗi của nó. –

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