前两天在处理数据的时候,发现这样一个需求,有多条记录,他们存在某些字段数据不同,需要将他们合并在一起,不同的通过符号拼接在同一个字段中。对于这种我也是第一次操作,分享一下。
-- 建表语句
CREATE TABLE stumerge(
id int(11) PRIMARY KEY,
name VARCHAR(12),
bir DATE
)
-- 添加数据
INSERT INTO stumerge(id,name,bir)VALUES(1,'yuqn1','2000-04-25'),
(2,'yuqn1','2000-04-26'),(3,'yuqn1','2000-04-26'),
(4,'yuqn1','2000-04-27'),(5,'yuqn1','2000-04-27'),
(6,'yuqn1','2000-04-27'),(7,'yuqn1','2000-04-28'),
(8,'yuqn1','2000-04-29'),(9,'yuqn1','2000-04-29')
-- 查询语句
SELECT * from stumerge
数据库内容如下:
需求,将相同出生日期的人通过‘,’拼接起来:
SELECT GROUP_CONCAT(name SEPARATOR ',')AS '姓名合集',
bir AS '出生日期'
FROM student.stumerge
-- WHERE id IN (1,2,3,4,5,6)
GROUP BY bir
ORDER BY bir DESC
注:该sql语句表示的是根据各个生日查询对应的人的合集,注释的内容表示只查对应id的人。
GROUP_CONCAT(name SEPARATOR ',') 表示将所有记录的 name 合在一起,配合 GROUP BY ,可以做到通过出生日期筛选。
GROUP_CONCAT 可以让多个字段集合。
GROUP_CONCAT 集合过程中,如果某些字段并不会相同,则会导致每个字段会重新撑开一列。
ORDER BY 表示排序。
WHERE 必须要在 GROUP BY 之前,GROUP BY 必须要在 ORDER BY 之前。
结果如下:
如果反注释 WHERE ,则会赛选出指定 id 的人。
以上内容如有错误或者不足,请指出来。