sql 查询将多个值合到一起

sql 查询将多个值合到一起

问题描述:

如有如下几条数据

中国 北京
中国 上海
中国 深圳
美国 XX
美国 YY

我想查询出来的结果为 两个字段 如下
中国 北京,上海,深圳
美国 XX,YY

这个可以实现吗

CREATE DATABASE test;

CREATE TABLE city(
Id INT,
pname VARCHAR(50),
name VARCHAR(50)
);

USE test;

INSERT INTO common.city (Id, pname, name)
VALUES (1, '中国','北京');
INSERT INTO common.city (Id, pname, name)
VALUES (2, '中国','上海');

INSERT INTO common.city (Id, pname, name)
VALUES (3, '美国','XX');

INSERT INTO common.city (Id, pname, name)
VALUES (4, '美国','YY');

SELECT pname,GROUP_CONCAT(name) AS name FROM city GROUP BY pname

以上为mysql,如果是其他数据库,使用的函数不一样而已。orcale中使用wmsys.wm_concat,根据数据库类型不一样,函数不一样

图片说明
SELECT t.county,GROUP_CONCAT(t.city) city FROM test t
GROUP BY t.county

上答案中:test为表名称

可以啊,这实际上就是多行转列,我给你发个教程连接,不懂再问我

推荐使用递归方式处理