Sql 根据选择的查询值执行查询

Sql 根据选择的查询值执行查询,sql,sql-server-2000,Sql,Sql Server 2000,如何实现以下查询- SELECT CASE WHEN COUNT(*) > 0 THEN -- UPDATE operation ELSE -- INSERT operation END AS [RESULT] FROM [TABLE_1] WHERE [CONDITION] 我正在使用SQLServer2000。 有人能帮我吗?到目前为止,最简单的方法是进行两个单独的查询,例如: IF

如何实现以下查询-

SELECT 
   CASE 
      WHEN COUNT(*) > 0 THEN 
         -- UPDATE operation
      ELSE 
         -- INSERT operation
   END AS [RESULT] 
FROM 
   [TABLE_1] 
WHERE 
   [CONDITION]
我正在使用SQLServer2000。
有人能帮我吗?

到目前为止,最简单的方法是进行两个单独的查询,例如:

IF (SELECT COUNT(*) FROM [TABLE_1]) > 0
    UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
ELSE 
    INSERT INTO [TABLE_1] (X) VALUES (Y)

到目前为止,最简单的方法是使用两个单独的查询,例如:

IF (SELECT COUNT(*) FROM [TABLE_1]) > 0
    UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
ELSE 
    INSERT INTO [TABLE_1] (X) VALUES (Y)
根据我的回答

IF EXISTS (SELECT * FROM [TABLE_1])
    UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
ELSE 
    INSERT INTO [TABLE_1] (X) VALUES (Y)
如果您希望更新的比例非常高,那么为什么要触摸该表两次呢

UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
IF @@ROWCOUNT = 0 
    INSERT INTO [TABLE_1] (X) VALUES (Y)
对于SQL Server 2000上非常高比例的插入,您不能执行相同的操作:根据我的答案

IF EXISTS (SELECT * FROM [TABLE_1])
    UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
ELSE 
    INSERT INTO [TABLE_1] (X) VALUES (Y)
如果您希望更新的比例非常高,那么为什么要触摸该表两次呢

UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
IF @@ROWCOUNT = 0 
    INSERT INTO [TABLE_1] (X) VALUES (Y)

对于SQL Server 2000上非常高比例的插入,您不能这样做:根据我的回答,我实际使用的是EXISTS而不是count我实际使用的是EXISTS而不是count
IF EXISTS (SELECT * FROM [TABLE_1])
    UPDATE [TABLE_1] SET X = Y WHERE [CONDITION]
ELSE 
    INSERT INTO [TABLE_1] (X) VALUES (Y)