SQL查询包含IF / ELSE语句。

35 浏览
0 Comments

SQL查询包含IF / ELSE语句。

这个问题已经在这里有答案了:

可能是重复的:

SQL Server上的INSERT OR UPDATE解决方案

我在困境中,我想编写一个包含条件语句的SQL查询。

例如:我有一个带有ID,NAME,STATUS列的SQL表,因此在将值插入到此表之前,我想检查表中是否已经存在该名称。 如果存在,则我想更新状态值。

是否可以使用queryString(SQL Server查询而不是存储过程)方法编写查询? 如果有人知道,请帮助我。 我正在使用SQL Server 2008 R2

admin 更改状态以发布 2023年5月22日
0
0 Comments

以下是可能的方法:\n1)使用“存在”方法\n

IF EXISTS(SELECT 1 FROM Table1 WHERE Name = @Name)
    UPDATE Table1 SET Status = @Status WHERE Name = @Name
ELSE
    INSERT INTO Table1 (Name, Status) VALUES(@Name, @Status)

\n2)使用MERGE\n

MERGE Table1 AS TARGET
USING (SELECT @Name, @Status FROM Table1) AS Source (Name, Status)
ON (TARGET.Name = Source.Name)
WHEN MATCHED 
    THEN UPDATE SET Status = Source.Status
WHEN NOT MATCHED 
    THEN INSERT (Name, Status) VALUES (Source.Name, Source.Status)

\n3)未编译查询(构建查询)\n

--Unable to post on S.O.F due to security limitations

\n建议方法为1和2(第3个方法是不必要的)。

0
0 Comments

你需要使用MERGE查询语法。

根据文档(http://technet.microsoft.com/en-us/library/bb510625.aspx

MERGE Production.UnitMeasure AS target
USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)
ON (target.UnitMeasureCode = source.UnitMeasureCode)
WHEN MATCHED THEN 
    UPDATE SET Name = source.Name
WHEN NOT MATCHED THEN   
    INSERT (UnitMeasureCode, Name)
    VALUES (source.UnitMeasureCode, source.Name)
    OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable

0