2 yi shen zhi nu yi_shen_zhi_nu 于 2017.01.05 10:08 提问

sql 查询将多个值合到一起
sql

如有如下几条数据

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

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

这个可以实现吗

6个回答

huhedong1182738042
huhedong1182738042   2017.01.05 10:32
已采纳

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,根据数据库类型不一样,函数不一样

xiao1011lc0120
xiao1011lc0120   2017.01.05 10:23

上答案中:test为表名称

lt_yl
lt_yl   2017.01.05 10:25
welan123123
welan123123   2017.01.05 10:49

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

推荐使用递归方式处理

welan123123
welan123123   2017.01.05 10:50
xiao1011lc0120
xiao1011lc0120   2017.01.05 10:21

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!