【问题标题】:Execute Query depending upon select query value根据选择查询值执行查询
【发布时间】:2010-08-16 07:39:29
【问题描述】:

如何实现下面的查询-

SELECT 
   CASE 
      WHEN COUNT(*) > 0 THEN 
         -- UPDATE operation
      ELSE 
         -- INSERT operation
   END AS [RESULT] 
FROM 
   [TABLE_1] 
WHERE 
   [CONDITION]

我正在使用 SQL Server 2000。 有人可以帮我吗?

【问题讨论】:

    标签: sql sql-server-2000


    【解决方案1】:

    Use EXISTS not COUNT 根据我的回答

    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 上的大量 INSERT,您不能这样做:you need TRY/CATCH to handle duplicates 根据我的回答

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我实际上会使用 EXISTS 而不是 count
      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多