如何在Azure SQL中关联多表并将不同表字段合并到单表中
Azure SQL 三表关联合并查询实现方案
以下为适配Azure SQL语法的查询模板,你可以结合图中的字段取值规则、实际表名、关联键替换对应部分即可使用:
-- 方案1:直接生成合并后的结果集 SELECT -- 按你的字段规则配置各字段来源,以下为示例 t1.column_a AS 目标字段1, t2.column_b AS 目标字段2, -- 多来源字段条件取值示例 CASE WHEN t1.status = 'active' THEN t1.value ELSE COALESCE(t3.value, t2.default_value) END AS 目标字段3 FROM source_table_1 t1 -- 根据你的数据匹配需求选择JOIN类型 INNER JOIN source_table_2 t2 ON t1.common_id = t2.common_id LEFT JOIN source_table_3 t3 ON t1.common_id = t3.common_id -- 如有过滤条件可补充 WHERE t1.is_deleted = 0 -- 方案2:如果需要直接生成新的合并表,在SELECT后补充INTO语法即可 SELECT -- 同上配置字段 t1.column_a AS 目标字段1, t2.column_b AS 目标字段2, CASE WHEN t1.status = 'active' THEN t1.value ELSE COALESCE(t3.value, t2.default_value) END AS 目标字段3 INTO merged_target_table -- 此处为你要创建的合并后的表名 FROM source_table_1 t1 INNER JOIN source_table_2 t2 ON t1.common_id = t2.common_id LEFT JOIN source_table_3 t3 ON t1.common_id = t3.common_id -- 方案3:如果合并表已经提前创建好,使用INSERT INTO语法 INSERT INTO merged_target_table (目标字段1, 目标字段2, 目标字段3) SELECT t1.column_a, t2.column_b, CASE WHEN t1.status = 'active' THEN t1.value ELSE COALESCE(t3.value, t2.default_value) END FROM source_table_1 t1 INNER JOIN source_table_2 t2 ON t1.common_id = t2.common_id LEFT JOIN source_table_3 t3 ON t1.common_id = t3.common_id
注意事项
- 关联类型可根据业务需求调整:
INNER JOIN仅保留三张表匹配一致的记录,LEFT JOIN保留左表全量记录,FULL OUTER JOIN保留三张表所有记录 - 多来源字段取值可灵活使用
CASE WHEN、IIF、COALESCE等Azure SQL支持的函数实现规则 - 如有聚合、去重需求,可配合
GROUP BY、DISTINCT、对应聚合函数实现
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

