首页 > 解决方案 > 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 条件的任何连接操作来复制相同的内容吗?或任何其他方法?

标签: sql-serverpostgresql

解决方案


推荐阅读