SQL连接两个表,返回第一个表的所有行,并在匹配表行的旁边一行中从右表返回逗号分隔的匹配ID

问题描述 投票:-1回答:2

我下面有两个表,我想加入这些表,我希望看到结果表中显示的结果,其中table2以逗号分隔在一行内。左表应保持原样,但第二个表应与之相邻,并具有匹配的ID。

NAMES
+-------------+----------------+
|          ID | Name           |
+-------------+----------------+
|           1 | Adem           |
|           2 | Mehmet         |
|           3 | Ali            |
+-------------+----------------+

LOGINS
+---------+-------------+
|      ID |        NAMES|
+---------+-------------+
|       17|         Adem|
|       18|         Adem|
|       19|       Mehmet| 
+---------+-------------+


RESULT TABLE
+-------------+----------------+-----------
|          ID | Name           | LoginIDs |
+-------------+----------------+-----------
|           1 | Adem           |17,18     |
|           2 | Mehmet         |19        |
|           3 | Ali            |          |
+-------------+----------------+----------+


left-join
2个回答
0
投票

如果您使用的是SQL Server 2017或更高版本,则STRING_AGG执行此操作。

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15


0
投票

您是否正在寻找类似的东西:

    SELECT N.Name, L.Names. R.Name, R.LoginID
        FROM Names AS N
        JOIN LOGINS AS L
        ON N.ID = L.ID
        JOIN RESULT AS R
        ON N.ID = R.ID 
© www.soinside.com 2019 - 2024. All rights reserved.