码迷,mamicode.com
首页 > 数据库 > 详细

数据库把n行查询为1行

时间:2017-07-26 14:38:39      阅读:169      评论:0      收藏:0      [点我收藏+]

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

一、创建示例表

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   数据   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!