【问题标题】:SQL Query to Concatenate one column and have a bunch of other columns? [duplicate]SQL查询连接一列并有一堆其他列? [复制]
【发布时间】:2012-06-29 01:17:35
【问题描述】:

可能重复:
Concatenate row values T-SQL

我有一张这样的桌子:

ref_num   name      type       route
----------------------------------------
1         A         W          401
2         B         X          401
3         C         E          401
3         C         E          411
4         D         Z          401
5         K         W          701
5         K         W          991
5         K         W          556
5         K         W          401
6         L         X          401
7         D         Y          401
7         D         Y          411
7         D         Y          680
8         E         Z          401

我想要这样的结果:

ref_num   name      type       routes
----------------------------------------
1         A         W          401
2         B         X          401
3         C         E          401,411
4         D         Z          401
5         K         W          701,991,556,401
6         L         X          401
7         D         Y          401,411,680
8         E         Z          401

如果有人可以给我一个查询示例以获得所需的结果,将不胜感激

【问题讨论】:

标签: mysql sql


【解决方案1】:
select ref_num, name, type, group_concat(routes)
from your_table
group by ref_num

在 MySQL 中,您不必group by 您选择的所有值。其他值可能会随机选择。但是,如果一组中的其他值相同,那么您不必担心。 OP的问题就是这种情况。

【讨论】:

  • 不需要按名称和类型分组吗?
  • 是的,但如果有不同的,最好添加它。顺便说一句,我没有对你投反对票
  • @juergend:最好解释一下什么时候有什么时候不需要。或者你为什么选择这个。
  • @PaddyC:在 MySQL 中没有(在其他 DBMS 中不需要)。但它可能会让查询显示随机结果 - 在某些情况下。
  • 可以通过将 sql_mode 设置为 ONLY_FULL_GROUP_BY 来禁用此行为(MySQL 中的默认设置)
【解决方案2】:

我认为 WM_CONCAT 会这样做:

SELECT REF_NUM, NAME, TYPE, WM_CONCAT(ROUTE) 
FROM ROUTES
GROUP BY REF_NUM, NAME, TYPE;

【讨论】:

  • 啊,抱歉,WM_CONCAT 是 Oracle 特有的。我的坏:) 每天都学点东西...
【解决方案3】:

您可以将它们与GROUP_CONCATGROUP BY 连接起来,类似于:

SELECT ref_num, name, type, GROUP_CONCAT(routes SEPARATOR ', ')   
FROM TableNAme 
GROUP BY ref_num, name, type

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多