在SQL Server 2008中替换为 [英] Replace Into in SQL Server 2008

查看:85
本文介绍了在SQL Server 2008中替换为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试进行迁移,但是此查询有问题:

I try to do a migration but i have problem with this query :

$DB->query("replace into periodetojour(idperiode,idjour,heure)
            values('".addslashes($idperiode)."','2','".addslashes($mardi)."')");

我看到REPLACE INTO不能在SQL Server 2008中使用,而且我不得不使用MERGE INTO

I saw that REPLACE INTO can't be used in SQL Server 2008 and that i hav to use MERGE INTO

我的问题是我找不到使用MERGE INTO的任何查询,因此我可能没有很好地使用它.您是否知道如何使用MERGE INTO进行更改,是否有义务在SQL Server 2008中进行更改?

My problem is that i don't find any of my query which is working by using MERGE INTO so i am probably not using it well. Do you have any idea how can i change it with MERGE INTO and is it an obligation to change it in SQL Server 2008 ?

感谢您的回答.

推荐答案

在您的情况下,

In your case, the MERGE statement would look like this:

$DB->query("MERGE INTO periodetojour dst 
            USING ( 
              SELECT '".addslashes($idperiode)."' idperiode, 
                     '2' idjour, 
                     '".addslashes($mardi)."' heure 
            ) src  
            ON src.idperiode = dst.idperiode  
            WHEN MATCHED THEN UPDATE SET  
              dst.idjour = src.idjour, 
              dst.heure = src.heure  
            WHEN NOT MATCHED THEN INSERT (idperiode, idjour, heure)  
              VALUES(src.idperiode, src.idjour, src.heure)");

这是假定idperiode是您的主键.如果主键由(idperiode, idjour)组成,则必须相应地修改ON子句和WHEN MATCHED THEN UPDATE SET子句:

This is assuming that idperiode is your primary key. If the primary key is composed of (idperiode, idjour) you'll have to adapt the ON clause as well as the WHEN MATCHED THEN UPDATE SET clause accordingly:

            -- [...]
            ON src.idperiode = dst.idperiode  
            AND src.idjour = dst.idjour
            WHEN MATCHED THEN UPDATE SET  
              dst.heure = src.heure
            -- [...]

这篇关于在SQL Server 2008中替换为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆