在另一个表SQL

问题描述

我有这3张桌子 表1:

 id_Table1  field_table1_1  field_table1_2
       1          A                B
       2          C                D
       3          E                F

表1:

 id_Table2  field_table2_1  field_table2_2
       4          G                H
       5          I                J    

列表项

表3:

 id_Table3  id_Table1  id_Table2
     1           1          4
     2           1          5
     3           2          5

所以表3保留了表1和表2之间的关系。

我想做的是查询,获取表1中的所有字段,再加上一个额外的字段,其中包含表2的所有ID(以逗号分隔)。

所以结果应该是这样的:

 id_Table1  field_table1_1  field_table1_2   id_Table2
       1          A                B            4,5
       2          C                D             5
       3          E                F

解决方法

一个选项使用横向联接和string_agg()

select t1.*,x.*
from table1 t1
outer apply (
    select string_agg(t3.id_table2) id_table2
    from table3 t3
    where t3.id_table1 = t1.id_table1
) x

无需携带table2即可获得所需的结果。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...