三十而立

一、同一张表中数据合并mysql中新增查询

SELECT sid, GROUP_CONCAT(filename SEPARATOR ';')
FROM pictures_copy
GROUP BY sid;

第1行:sid代表主字段名,filename代表要合并的字段名
第2行:pictures_copy代表数据表
第3行:sid代表主字段名

mysql中新增查询
简单来说,可以通过:

mysql> SELECT id , GROUP_CONCAT(name) name
    -> FROM a 
    -> GROUP BY id;

来获得这样的结果集:

+------+---------+
| id   | name    |
+------+---------+
| 1    | A,A,B,C |
| 2    | A,B     |
+------+---------+

当然也可以对其的分隔符进行修改:

mysql> SELECT id, GROUP_CONCAT(name SEPARATOR ';')
    -> FROM a
    -> GROUP BY id;

这将使分隔符改为" ; "

同样也可以对name列进行排序:

mysql> SELECT id, GROUP_CONCAT(name ORDER BY name DESC) name
    -> FROM a
    -> GROUP BY id;
+------+---------+
| id   | name    |
+------+---------+
| 1    | C,B,A,A |
| 2    | B,A     |
+------+---------+
2 rows in set (0.00 sec)

当然官方还给出了可以通过DISTINCT来排除冗余
用法如下:

mysql> SELECT id, GROUP_CONCAT(DISTINCT name) name
    -> FROM a
    -> GROUP BY id;
+------+-------+
| id   | name  |
+------+-------+
| 1    | A,B,C |
| 2    | A,B   |
+------+-------+
2 rows in set (0.00 sec)

SELECT sid, GROUP_CONCAT(filename SEPARATOR ';')
FROM pictures_copy
GROUP BY sid;

第1行:sid代表主字段名,filename代表要合并的字段名
第2行:pictures_copy代表数据表
第3行:sid代表主字段名

二、2张表合并

UPDATE subject,img  //subject 和 img分别为2张表
SET subject.img = img.img    /共同的img字段
WHERE  
subject.sid = img.sid;    /2个相加

标签: mysql

添加新评论