如果在SQL语句中查出数据是三列,在一二列相同的情况下第三列的数据就全部显示在第三列?

比如:
A B C
1 2 我的
1 2 你的
则显示结果为
A B C
1 2 我的;你的

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 行记录)

温馨提示:答案为网友推荐,仅供参考
相似回答