Về cơ bản câu hỏi là làm thế nào để có được từ này:
foo_id foo_name 1 A 1 B 2 C
đến đây:
foo_id foo_name 1 AB 2 C
Về cơ bản câu hỏi là làm thế nào để có được từ này:
foo_id foo_name 1 A 1 B 2 C
đến đây:
foo_id foo_name 1 AB 2 C
Câu trả lời:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-fifts.html#feft_group-concat
Từ liên kết trên , GROUP_CONCAT
: Hàm này trả về kết quả chuỗi với các giá trị không phải NULL được nối từ một nhóm. Nó trả về NULL nếu không có giá trị không phải NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Thêm chi tiết tại đây .
Từ liên kết trên , GROUP_CONCAT
: Hàm này trả về kết quả chuỗi với các giá trị không phải NULL được nối từ một nhóm. Nó trả về NULL nếu không có giá trị không phải NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - Trong MySQL, bạn có thể nhận được các giá trị được kết hợp của các kết hợp biểu thức. Để loại bỏ các giá trị trùng lặp, sử dụng mệnh đề DISTINCT . Để sắp xếp các giá trị trong kết quả, hãy sử dụng mệnh đề ORDER BY. Để sắp xếp theo thứ tự ngược lại , hãy thêm từ khóa DESC (giảm dần) vào tên của cột bạn sắp xếp theo mệnh đề ORDER BY. Mặc định là thứ tự tăng dần; điều này có thể được chỉ định rõ ràng bằng cách sử dụng từ khóa ASC. Dấu phân cách mặc định giữa các giá trị trong một nhóm là dấu phẩy (Số, Giàn). Để chỉ định một dấu tách rõ ràng, hãy sử dụng SEPARATOR theo sau là giá trị bằng chuỗi ký tự nên được chèn giữa các giá trị nhóm. Để loại bỏ hoàn toàn dải phân cách, chỉ định SEPARATOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
HOẶC LÀ
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Kết quả được rút ngắn theo độ dài tối đa được đưa ra bởi biến hệ thống group_concat_max_len, có giá trị mặc định là 1024 ký tự, vì vậy trước tiên chúng tôi thực hiện:
SET group_concat_max_len=100000000;
và sau đó, ví dụ:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
cấu hình này là gì? Kết nối / phiên hiện tại, hoặc nó sẽ ảnh hưởng đến các khách hàng khác?
Câu trả lời tuyệt vời. Tôi cũng gặp vấn đề với NULLS và đã cố gắng giải quyết vấn đề đó bằng cách bao gồm COALESCE bên trong GROUP_CONCAT. Ví dụ như sau:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Hy vọng điều này sẽ giúp người khác