sql - 将多张表合并为一张表 SQL Server
问题描述
我想将 3 个表合并为一个,只是为了获取具有以下条件的完整数据
- 将 3 个表 [test1]、[test2]、[test3] 合并为一个表 [test]
- 如果合并时,如果一列为空白,则从另一个表中选择
- Col1 存在于所有 3 个表中
这是我从表 2 合并到测试中的示例代码。
MERGE INTO [dbo].[test] a
USING [dbo].[test2] b ON a.col1 = b.col1
WHEN MATCHED THEN
UPDATE
SET col1 = b.col1,
col2 = b.col2,
col3 = b.col3,
col4 = b.col4
WHERE col1 = '' OR col2 = '' OR col3 = '' OR col4 = '';
它得到错误:
关键字“where”附近的语法不正确。
解决方案
请尝试使用 COALESCE 函数而不是使用 where 条件。如果遇到 NULL,COALESCE 函数将采用下一个值。
Merge into [dbo].[test] a
using [dbo].[test2] b
on a.col1 = b.col1
when matched then
update
set col2 = COALESCE(a.col2, b.col2),
col3 = COALESCE(a.col3, b.col3),
col4 = COALESCE(a.col4, b.col4);
因此,在修改后的代码中,如果表 [dbo].[test] col2 为 Null,则它从 [dbo].[test2] 中获取值。由于您将使用 COALESCE,因此您将能够合并任意数量的值。
推荐阅读
- php - 如何在 PHP 中配置基于会话的超时选项?
- google-cloud-platform - 将 10gb 文件上传到 GCS
- c# - 当用户在 FTP 发布期间访问 ASP.NET MVC 网站时会发生什么?
- reactjs - 当后端位于实际服务器上时,如何使用 React 向 Express 后端发送请求?
- python - discord.py 获取用户“关于我”部分
- arduino - 向 arduino 形式 ROS 提供输入
- java - 实现 Thread.UncaughtExceptionHandler 的类会捕获所有可能的未捕获异常吗?
- r - R根据另一个不公平连接的表的日期创建一个汇总表
- android - 如何使用自定义的onClick进行数据绑定
- python - Django登录页面循环