当前位置:Gxlcms > 数据库问题 > 数据库把n行查询为1行

数据库把n行查询为1行

时间:2021-07-01 10:21:17 帮助过:26人阅读

一、创建示例表

CREATE TABLE TestTable (
name VARCHAR(10),
skill VARCHAR(10)
);

INSERT INTO TestTable VALUES (‘张三‘, ‘php‘);
INSERT INTO TestTable VALUES (‘张三‘, ‘java‘);
INSERT INTO TestTable VALUES (‘张三‘, ‘c#‘);
INSERT INTO TestTable VALUES (‘李四‘, ‘c‘);
INSERT INTO TestTable VALUES (‘李四‘, ‘c++‘);

表结构为:

name skill
张三 php
张三 java
张三 c#
李四 c
李四 c++

 

 

 

 

 

 

希望查询的结果:

name allSkill
张三 php,java,c#
李四 c,c++

 

 

 

二、SQL Server中实现

-- SQL Server
SELECT name,STUFF(
   (
   SELECT ‘,‘ + skill
   FROM testtable a
   WHERE a.name = b.name
   FOR XML PATH(‘‘)
   ),
   1, 1, ‘‘) AS allSkill
FROM testtable b
GROUP BY name

三、MySQL中实现

-- MySQL
SELECT name,GROUP_CONCAT(skill) AS allSkill
FROM testtable
GROUP BY name;

四、Oracle中实现

-- Oracle
SELECT name,WMSYS.WM_CONCAT(skill) AS allSkill
FROM testtable
GROUP BY name;

  

数据库把n行查询为1行

标签:varchar   skill   kill   values   ++   mysq   concat   name   数据   

人气教程排行