sql - 在另一个表 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
即可获得您想要的结果。
推荐阅读
- xslt - 将日期格式从 YYYY-MM-DD (2018-08-21) 转换为 MMM-DD-YYY (Aug-21-2018)
- c - 使用 c 编程在 scanf() 后不显示输出
- git - 仅拉取和推送到 git 中的特定分支
- c# - 二维矩阵索引超出范围
- sql - 外部表语法错误 KUP-01005 Oracle
- node.js - 更新属于 firebase 中任何用户的节点
- linux - 需要从 linux 目录制作可启动的 SD 卡
- python - RuntimeError:未找到最佳参数:函数调用次数已达到 maxfev = 1000
- c# - 如何仅将表单值发送到电子邮件?
- java - 如何使用可变日期作为数组名称的 JSON - Java / Spring