Bạn có thể muốn sử dụng GROUP_CONCAT()
chức năng như sau:
SELECT t1.id,
t1.first_name,
t1.last_name,
GROUP_CONCAT(DISTINCT job_id ORDER BY job_id SEPARATOR ',') job_id
FROM Table1 t1
JOIN Table2 t2 ON (t2.Person_id = t1.id)
GROUP BY t1.id;
Hãy kiểm tra nó với dữ liệu mẫu của bạn:
CREATE TABLE Table1 (
id int AUTO_INCREMENT PRIMARY KEY,
first_name varchar(50),
last_name varchar(50));
CREATE TABLE Table2 (
id int AUTO_INCREMENT PRIMARY KEY,
person_id int,
job_id int);
INSERT INTO Table1 VALUES (NULL, 'Joe', 'Bloggs');
INSERT INTO Table1 VALUES (NULL, 'Mike', 'Smith');
INSERT INTO Table1 VALUES (NULL, 'Jane', 'Doe');
INSERT INTO Table2 VALUES (NULL, 1, 1);
INSERT INTO Table2 VALUES (NULL, 1, 2);
INSERT INTO Table2 VALUES (NULL, 2, 2);
INSERT INTO Table2 VALUES (NULL, 3, 3);
INSERT INTO Table2 VALUES (NULL, 3, 4);
Kết quả của truy vấn:
+----+------------+-----------+--------+
| id | first_name | last_name | job_id |
+----+------------+-----------+--------+
| 1 | Joe | Bloggs | 1,2 |
| 2 | Mike | Smith | 2 |
| 3 | Jane | Doe | 3,4 |
+----+------------+-----------+--------+
Lưu ý rằng theo mặc định, kết quả của GROUP_CONCAT()
được cắt ngắn đến độ dài tối đa là 1024
. Tuy nhiên, điều này có thể được đặt thành lớn hơn nhiều giá trị
. Sử dụng lệnh SET nếu bạn cần sửa đổi nó, như sau:
SET GLOBAL group_concat_max_len = 2048;