首页 > 数据库技术 > 详细

数据库把n行查询为1行

时间:2017-07-26 14:32:21      阅读:309      评论:0      收藏:0      [点我收藏+]

一、创建示例表

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行

原文:http://www.cnblogs.com/by-lhc/p/7239142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!