Computer >> Máy Tính >  >> Lập trình >> MySQL

Truy vấn MySQL để nối các bản ghi với id tương ứng tương tự trong một hàng được phân tách bằng một ký tự đặc biệt

Đối với điều này, bạn có thể sử dụng CONCAT_WS () cùng với GROUP_CONCAT (). Trước tiên, hãy để chúng tôi tạo một

mysql> create table DemoTable2016
   -> (
   -> UserId int,
   -> UserName varchar(20)
   -> );
Query OK, 0 rows affected (0.51 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable2016 values(1,'Chris');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable2016 values(2,'Bob');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable2016 values(1,'David');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable2016 values(2,'Carol');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable2016 values(1,'Sam');
Query OK, 1 row affected (0.14 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable2016;

Điều này sẽ tạo ra kết quả sau -

+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | Chris    |
| 2      | Bob      |
| 1      | David    |
| 2      | Carol    |
| 1      | Sam      |
+--------+----------+
5 rows in set (0.00 sec)

Đây là truy vấn để nối các bản ghi trong một hàng được phân tách bằng một ký tự đặc biệt -

mysql> select group_concat(concat_ws('-',UserName,UserId)) from DemoTable2016 group by UserId;

Điều này sẽ tạo ra kết quả sau -

+----------------------------------------------+
| group_concat(concat_ws('-',UserName,UserId)) |
+----------------------------------------------+
| Chris-1,David-1,Sam-1                        |
| Bob-2,Carol-2                                |
+----------------------------------------------+
2 rows in set (0.00 sec)