在 MySQL 中檢查多條記錄中列值是否相同,並將這些記錄用特殊字元分隔在同一行中
為此,您可以使用 GROUP_CONCAT() 以及 DISTINCT。讓我們先建立一個表 -
mysql> create table DemoTable ( Id int, Subject varchar(40) ); Query OK, 0 rows affected (0.56 sec)
使用 insert 命令在表中插入一些記錄 -
mysql> insert into DemoTable values(100,'MySQL'); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values(100,'MongoDB'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(100,'Java'); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(100,'MongoDB'); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(101,'MySQL'); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(101,'MySQL'); Query OK, 1 row affected (0.10 sec)
使用 select 語句顯示錶中的所有記錄 -
mysql> select *from DemoTable;
這將產生以下輸出 -
+------+---------+ | Id | Subject | +------+---------+ | 100 | MySQL | | 100 | MongoDB | | 100 | Java | | 100 | MongoDB | | 101 | MySQL | | 101 | MySQL | +------+---------+ 6 rows in set (0.00 sec)
以下是檢查列值在多條記錄中是否相同並將這些記錄用特殊字元分隔在同一行的查詢。這裡的分隔符是連字元 -
mysql> select Id,group_concat(distinct Subject separator '-') as Subject from DemoTable group by Id;
這將產生以下輸出 -
+------+--------------------+ | Id | Subject | +------+--------------------+ | 100 | Java-MongoDB-MySQL | | 101 | MySQL | +------+--------------------+ 2 rows in set (0.04 sec)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP