根據 MySQL GROUP BY 按組列出所有行?


要按組列出所有行,可以使用 GROUP_CONCAT()。我們首先建立一個表 −

mysql> create table DemoTable
   (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name varchar(20),
   Value varchar(100)
   );
Query OK, 0 rows affected (0.62 sec)

使用 insert 命令在表中插入一些記錄 −

mysql> insert into DemoTable(Name,Value) values('John','John');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Name,Value) values('Carol','Carol');
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable(Name,Value) values('John','Works');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Name,Value) values('Carol','Works');
Query OK, 1 row affected (0.22 sec)

mysql> insert into DemoTable(Name,Value) values('John','At');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Name,Value) values('Carol','At');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable(Name,Value) values('John','Amazon');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable(Name,Value) values('Carol','Google');
Query OK, 1 row affected (0.16 sec)

使用 select 語句從表中顯示所有記錄 −

mysql> select *from DemoTable;

這將產生以下輸出 -

+----+-------+--------+
| Id | Name  | Value  |
+----+-------+--------+
| 1  | John  | John   |
| 2  | Carol | Carol  |
| 3  | John  | Works  |
| 4  | Carol | Works  |
| 5  | John  | At     |
| 6  | Carol | At     |
| 7  | John  | Amazon |
| 8  | Carol | Google |
+----+-------+--------+
8 rows in set (0.00 sec)

以下是按組列出所有行的查詢。此處將獲取“John”的值,即“John 在亞馬遜工作,其 ID 為 1、3、5、7。它同樣適用於“Carol” −

mysql> select Name, GROUP_CONCAT(Value SEPARATOR ' ') AS `Complete_Status` from DemoTable group by Name;

這將產生以下輸出 −

+-------+-----------------------+
| Name  | Complete_Status       |
+-------+-----------------------+
| Carol | Carol Works At Google |
| John  | John Works At Amazon  | 
+-------+-----------------------+
2 rows in set (0.00 sec)

更新時間:30-Jul-2019

1 千以上次瀏覽

開啟你的 職業生涯

透過完成本課程來獲得認證

開始吧
廣告
© . All rights reserved.