时间: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 数据