1

SQL に関する質問があります。誰かが私を助けてくれたり、アドバイスをくれたりしてくれることを願っています。とても有難い。

AとBの2つのテーブルがあります。

  • IDA には主キー フィールドである列があり、NAME
  • B には列DUPIDNAMEあり、IDこれが主キーです

A と B の関係は B にあり、 にDUPIDは の特定の値が含まれておりA.ID、結合..B.NAMEA.NAMEA.ID = B.DUPID

説明がわかりにくいかもしれませんが、簡単な例を示します。

A                                  B
ID  NAME                           DUPID      NAME
1   null                            1             John
2   null                            1             John
3   null                            1             Mark
4   null                            3             Luke
5   null                            3             Luke
                                    3             Luke
                                    3             Matthew

したがって、最終的には、テーブル A を更新して、以下のようにする必要があります。

A
ID      NAME
1        John;Mark
2        null
3        Luke;Matthew
4        null
5        null
4

1 に答える 1

4

とは異なりMySQLSQL Serverそれを行うための組み込み関数はありません。CROSS APPLYただし、とを使用してシミュレートすることはできますFOR XML PATH('')

SELECT  a.ID, 
        SUBSTRING(d.NameList,1, LEN(d.NameList) - 1) Names
FROM    a
        CROSS APPLY
        (
            SELECT DISTINCT [NAME] + '; ' 
            FROM  B 
            WHERE A.ID = B.DupID 
            FOR XML PATH('')
        ) D (NameList) 

SQLFiddleデモ

于 2012-09-27T15:04:59.730 に答える