浅析MySQL中concat以及group_concat的使用

说明:

本文中使用的例子均在下面的数据库表tt2下执行:

mysql> create table tt2(
    -> id int auto_increment ,
    -> name varchar(20),
    -> date datetime,
    -> sigin int not null,
    -> sex varchar(10) not null,
    -> score int ,
    -> primary key(id)
    -> );
Query OK, 0 rows affected (0.55 sec)

mysql> show tables;
+--------------+
| Tables_in_xy |
+--------------+
| stu          |
| test1        |
| test3        |
| test5        |
| test6        |
| test7        |
| test8        |
| tt2          |
+--------------+
8 rows in set (0.00 sec)

mysql> insert into tt2 values(0,'小明',2016-04-22 15:25:33,1,1,0);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '15:25
:33,1,1,0)' at line 1
mysql> desc tt2;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
| date  | datetime    | YES  |     | NULL    |                |
| sigin | int(11)     | NO   |     | NULL    |                |
| sex   | varchar(10) | NO   |     | NULL    |                |
| score | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
6 rows in set (0.05 sec)

mysql> insert into tt2 values(0,'小明','2016-04-22 15:25:33',1,1,0);
Query OK, 1 row affected (0.15 sec)

mysql> select*from tt2;
+----+------+---------------------+-------+-----+-------+
| id | name | date                | sigin | sex | score |
+----+------+---------------------+-------+-----+-------+
|  1 | 小明 | 2016-04-22 15:25:33 |     1 | 1   |     0 |
+----+------+---------------------+-------+-----+-------+
1 row in set (0.00 sec)

mysql> insert into tt2 values(0,'小王','2016-04-22 15:25:47',3,0,0),(0,'小丽','2
016-04-19 15:26:02',2,1,0),(0,'小王','2016-04-07 15:26:14',4,0,0),(0,'小明','201
6-04-11 15:26:40',4,1,0),(0,'小明','2016-04-04 15:25:54',2,0,0);
Query OK, 5 rows affected (0.10 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select*from tt2;
+----+------+---------------------+-------+-----+-------+
| id | name | date                | sigin | sex | score |
+----+------+---------------------+-------+-----+-------+
|  1 | 小明 | 2016-04-22 15:25:33 |     1 | 1   |     0 |
|  2 | 小王 | 2016-04-22 15:25:47 |     3 | 0   |     0 |
|  3 | 小丽 | 2016-04-19 15:26:02 |     2 | 1   |     0 |
|  4 | 小王 | 2016-04-07 15:26:14 |     4 | 0   |     0 |
|  5 | 小明 | 2016-04-11 15:26:40 |     4 | 1   |     0 |
|  6 | 小明 | 2016-04-04 15:25:54 |     2 | 0   |     0 |
+----+------+---------------------+-------+-----+-------+
6 rows in set (0.01 sec)


mysql>  insert into tt2 values(0,'maryleo ','2017-07-31 12:43:59',0,1,60),(0,'na
ncysun','2017-07-31 12:43:59',0,1,60);
Query OK, 2 rows affected (0.10 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select*from tt2;
+----+----------+---------------------+-------+-----+-------+
| id | name     | date                | sigin | sex | score |
+----+----------+---------------------+-------+-----+-------+
|  1 | 小明     | 2016-04-22 15:25:33 |     1 | 1   |     0 |
|  2 | 小王     | 2016-04-22 15:25:47 |     3 | 0   |     0 |
|  3 | 小丽     | 2016-04-19 15:26:02 |     2 | 1   |     0 |
|  4 | 小王     | 2016-04-07 15:26:14 |     4 | 0   |     0 |
|  5 | 小明     | 2016-04-11 15:26:40 |     4 | 1   |     0 |
|  6 | 小明     | 2016-04-04 15:25:54 |     2 | 0   |     0 |
|  7 |          | 2017-04-22 15:25:47 |     0 | 0   |     0 |
|  8 | maryleo  | 2017-07-31 12:43:59 |     0 | 1   |    60 |
|  9 | nancysun | 2017-07-31 12:43:59 |     0 | 1   |    60 |
+----+----------+---------------------+-------+-----+-------+
9 rows in set (0.00 sec)


mysql> select concat(id,name,score) as info from tt2;
+-------------+
| info        |
+-------------+
| 1小明0      |
| 2小王0      |
| 3小丽0      |
| 4小王0      |
| 5小明0      |
| 6小明0      |
| 7 0         |
| 8maryleo 60 |
| 9nancysun60 |
+-------------+
9 rows in set (0.00 sec)

mysql> select concat(id,',',name,',',score) as info from tt2;
+---------------+
| info          |
+---------------+
| 1,小明,0      |
| 2,小王,0      |
| 3,小丽,0      |
| 4,小王,0      |
| 5,小明,0      |
| 6,小明,0      |
| 7, ,0         |
| 8,maryleo ,60 |
| 9,nancysun,60 |
+---------------+
9 rows in set (0.00 sec)

mysql> select concat_ws(',',id,name,score) as info from tt2;
+---------------+
| info          |
+---------------+
| 1,小明,0      |
| 2,小王,0      |
| 3,小丽,0      |
| 4,小王,0      |
| 5,小明,0      |
| 6,小明,0      |
| 7, ,0         |
| 8,maryleo ,60 |
| 9,nancysun,60 |
+---------------+
9 rows in set (0.00 sec)

mysql> select concat_ws('_',id,name,score) as info from tt2;
+---------------+
| info          |
+---------------+
| 1_小明_0      |
| 2_小王_0      |
| 3_小丽_0      |
| 4_小王_0      |
| 5_小明_0      |
| 6_小明_0      |
| 7_ _0         |
| 8_maryleo _60 |
| 9_nancysun_60 |
+---------------+
9 rows in set (0.00 sec)

mysql> select concat_ws('null',id,name,score) as info from tt2;
+---------------------+
| info                |
+---------------------+
| 1null小明null0      |
| 2null小王null0      |
| 3null小丽null0      |
| 4null小王null0      |
| 5null小明null0      |
| 6null小明null0      |
| 7null null0         |
| 8nullmaryleo null60 |
| 9nullnancysunnull60 |
+---------------------+
9 rows in set (0.00 sec)

mysql> select concat_ws(null,id,name,score) as info from tt2;
+------+
| info |
+------+
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+------+
9 rows in set (0.00 sec)

mysql> select name,min(id) from tt2 ;
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELEC
T list contains nonaggregated column 'xy.tt2.name'; this is incompatible with sq
l_mode=only_full_group_by
mysql> select name,min(id) from tt2 group by name ;
+----------+---------+
| name     | min(id) |
+----------+---------+
| 小明     |       1 |
| 小王     |       2 |
| 小丽     |       3 |
|          |       7 |
| maryleo  |       8 |
| nancysun |       9 |
+----------+---------+
6 rows in set (0.02 sec)

mysql> select name,id from tt2 order by name;
+----------+----+
| name     | id |
+----------+----+
|          |  7 |
| maryleo  |  8 |
| nancysun |  9 |
| 小丽     |  3 |
| 小明     |  1 |
| 小明     |  5 |
| 小明     |  6 |
| 小王     |  2 |
| 小王     |  4 |
+----------+----+
9 rows in set (0.02 sec)

mysql> select name,group_concat(id) from tt2 group by name;
+----------+------------------+
| name     | group_concat(id) |
+----------+------------------+
|          | 7                |
| maryleo  | 8                |
| nancysun | 9                |
| 小丽     | 3                |
| 小明     | 1,5,6            |
| 小王     | 2,4              |
+----------+------------------+
6 rows in set (0.02 sec)

mysql> select name,group_concat(id order by id desc separator '_') from tt2 grou
p by name;
+----------+-------------------------------------------------+
| name     | group_concat(id order by id desc separator '_') |
+----------+-------------------------------------------------+
|          | 7                                               |
| maryleo  | 8                                               |
| nancysun | 9                                               |
| 小丽     | 3                                               |
| 小明     | 6_5_1                                           |
| 小王     | 4_2                                             |
+----------+-------------------------------------------------+
6 rows in set (0.00 sec)

mysql> select name,group_concat(concat_ws('-',id,score)order by id) from tt2 gro
up by name;
+----------+--------------------------------------------------+
| name     | group_concat(concat_ws('-',id,score)order by id) |
+----------+--------------------------------------------------+
|          | 7-0                                              |
| maryleo  | 8-60                                             |
| nancysun | 9-60                                             |
| 小丽     | 3-0                                              |
| 小明     | 1-0,5-0,6-0                                      |
| 小王     | 2-0,4-0                                          |
+----------+--------------------------------------------------+
6 rows in set (0.00 sec)

mysql>

参考:https://blog.csdn.net/Mary19920410/article/details/76545053

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值