sql-server - Merge..USING..WHEN PostgreSQL 中的 SQL Server 等效项
问题描述
现在,我们正在尝试将存储过程从 SQL Server 迁移到 PostgreSQL。在此,我们看到了一个查询方法MERGE..USING..WHEN
。所以我找不到等价物。那么有没有办法复制这个功能呢?实际查询如下。
WITH phase_list AS (
SELECT @id_plant AS id_plant
, id_phase
, date_started
FROM OPENJSON(@phase_list)
WITH (
id_phase INT '$.id_phase',
date_started DATE '$.date_started'
)
WHERE date_started IS NOT NULL
)
MERGE grow.plant_phase AS t
USING phase_list AS s
ON s.id_plant = t.id_plant AND s.id_phase = t.id_phase
WHEN MATCHED AND (t.date_started <> s.date_started) THEN
UPDATE
SET t.date_started=s.date_started,
t.date_updated=getutcdate(),
t.updated_by=@id_user
WHEN NOT MATCHED BY TARGET THEN
INSERT (id_plant, id_phase, date_started, created_by, updated_by)
VALUES (s.id_plant, s.id_phase, s.date_started, @id_user, @id_user)
WHEN NOT MATCHED BY SOURCE AND t.id_plant = @id_plant THEN
DELETE;
我们可以使用带有某些 if/else 条件的任何连接操作来复制相同的内容吗?或任何其他方法?
解决方案
推荐阅读
- hyperlink - html中的CSS链接
- reactjs - 反应密码提交验证
- jquery - 使用媒体查询调整浏览器大小时 jQuery 脚本更改菜单的问题
- reactjs - 喜欢有条件地在formik中渲染一个initialValue
- llvm - 如何在 LLVM IR 中使用 RISC-V 向量 (RVV) 指令?
- node.js - 如何在moodle中添加nodejs?
- rust - 为什么我在防锈闭合时出现终身错误
- c++ - Visual Studio 2019 测试资源管理器没有找到 c++ google 测试
- swift - 使用 Swift 5 在 Xcode 12 中无法推断数组错误
- google-chrome-extension - 如果特定 url 选项卡在任何地方打开,Chrome 扩展程序会显示上下文菜单