如果在SQL语句中查出数据是三列,在一二列相同的情况下第三列的数据就全部显示在第三列?
1个回答
推荐于2016-04-26
展开全部
CREATE TABLE TestTitle (
name VARCHAR(10),
title VARCHAR(20)
);
INSERT INTO TestTitle VALUES ('张三', '程序员');
INSERT INTO TestTitle VALUES ('张三', '系统管理员');
INSERT INTO TestTitle VALUES ('张三', '网络管理员');
INSERT INTO TestTitle VALUES ('李四', '项目经理');
INSERT INTO TestTitle VALUES ('李四', '系统分析员');
Oracle 数据库的话
SELECT
2 name,
3 WMSYS.WM_CONCAT(title) AS allTitle
4 FROM
5 TestTitle
6 GROUP BY
7 name;
NAME
ALLTITLE
李四
项目经理,系统分析员
张三
程序员,系统管理员,网络管理员
SQL Server 的话
SELECT
name,
STUFF(
(
SELECT
',' + title
FROM
TestTitle subTitle
WHERE
name = TestTitle.name
FOR XML PATH('')
),
1, 1, '') AS allTitle
FROM
TestTitle
GROUP BY
name
name allTitle
---------- --------------------------------
李四 项目经理,系统分析员
张三 程序员,系统管理员,网络管理员
MySQL 的话
mysql> SELECT
-> name,
-> GROUP_CONCAT(title) AS allTitle
-> FROM
-> TestTitle
-> GROUP BY
-> name;
+------+------------------------------+
| name | allTitle |
+------+------------------------------+
| 李四 | 项目经理,系统分析员 |
| 张三 | 程序员,系统管理员,网络管理员 |
+------+------------------------------+
2 rows in set (0.00 sec)
PostgreSQL 的话
SELECT
name,
array_to_string(ARRAY(SELECT unnest(array_agg(title))),',') AS allTitle
FROM
TestTitle
GROUP BY
name;
name | alltitle
------+------------------------------
李四 | 项目经理,系统分析员
张三 | 程序员,系统管理员,网络管理员
(2 行记录)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询