【问题标题】:Concatenating data in sql在sql中连接数据
【发布时间】:2012-09-25 17:09:42
【问题描述】:

给定以下 SQL 表(带数据)

create table a (key1 INT, value1 NVARCHAR(MAX))
create table b (fk INT, value2 NVARCHAR(MAX))

INSERT INTO a(key1, value1) values (1, 'test1')
INSERT INTO a(key1, value1) values (2, 'test2')

INSERT INTO b(fk, value2) values (1, 'b1.1')
INSERT INTO b(fk, value2) values (1, 'b1.2')
INSERT INTO b(fk, value2) values (1, 'b1.3')

我想返回 b 中连接在一起的外键值,如下所示:

key1    value1  col
1       test1   b1.1, b1.2, b1.3
2       test2   NULL

我知道 FOR XML PATH 有可能(理论上),但我就是想不通

【问题讨论】:

    标签: sql concatenation for-xml


    【解决方案1】:

    这应该会得到你想要的结果:

    select a.key1,
      a.value1,
      stuff((select distinct ', ' + value2
             from b
             where a.key1 = b.fk 
             for XML path('')),1,1,'') 
    from a
    

    SQL Fiddle with Demo

    【讨论】:

    • 太棒了。如果可以的话,还有无限加号,用于指出 SQL Fiddle。 JSFiddle 已成为我最喜欢的网站之一,但不知道有一个用于 SQL 的网站。
    • @NateNoonen SQL Fiddle 很棒,尤其是在提出需要 DDL/DML 的问题时 - 这是提供它的一种简单方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2019-06-05
    相关资源
    最近更新 更多