Sql 更新查询错误的CASE语句

Sql 更新查询错误的CASE语句,sql,sql-server-2008,case,Sql,Sql Server 2008,Case,我正在使用CASE语句更新一些表数据,但它的给定错误在WHEN和THEN条件中是错误的。任何人都可以知道这有什么问题。这是我的代码 UPDATE TBL_AMOUNT_SETTING SET CALCULATED_AMOUNT = CASE WHEN EXISTS(SELECT COUNT(*) FROM TBL_GAME_PRICE_BY_DATE WHERE

我正在使用CASE语句更新一些表数据,但它的给定错误在WHEN和THEN条件中是错误的。任何人都可以知道这有什么问题。这是我的代码

UPDATE TBL_AMOUNT_SETTING 
SET CALCULATED_AMOUNT =
        CASE
           WHEN EXISTS(SELECT COUNT(*) 
                       FROM TBL_GAME_PRICE_BY_DATE 
                       WHERE GAMEPRICE_DATE = CONVERT(DATE,GETDATE())) 
             THEN 
                (SELECT GAMEPRICE 
                 FROM TBL_GAME_PRICE_BY_DATE 
                 WHERE GAMEID = 10 
                   AND GAMEPRICE_DATE = CONVERT(DATE,GETDATE()))
           ELSE NULL
        END
 WHERE REF_GAME_ID = 10         

您的sql是错误的,您错过了case关键字

模板如下:

select case 
  when exists (
  ...
  ) 
  then ...
  else ...
  end
  where ...
更新时相同:

  update tbl set field =
  case 
  when exists (
  ...
  ) 
  then ...
  else ...
  end
  where ...

您的sql是错误的,您错过了case关键字

模板如下:

select case 
  when exists (
  ...
  ) 
  then ...
  else ...
  end
  where ...
更新时相同:

  update tbl set field =
  case 
  when exists (
  ...
  ) 
  then ...
  else ...
  end
  where ...

您问题的原始问题在
更新
查询中缺少
案例
关键字

我认为更好的方法是分离update语句的过程。由于您的
子查询
没有一个是相关的,所以您可以试试这个

这比你所做的更具可读性

DECLARE @gameprice NUMERIC(22, 6) 

IF EXISTS(SELECT Count(*) 
          FROM   tbl_game_price_by_date 
          WHERE  gameprice_date = CONVERT(DATE, Getdate())) 
  SELECT @gameprice = gameprice 
  FROM   tbl_game_price_by_date 
  WHERE  gameid = 10 
         AND gameprice_date = CONVERT(DATE, Getdate()) 

UPDATE tbl_amount_setting 
SET    calculated_amount = @gameprice 
WHERE  ref_game_id = 10 

您问题的原始问题在
更新
查询中缺少
案例
关键字

我认为更好的方法是分离update语句的过程。由于您的
子查询
没有一个是相关的,所以您可以试试这个

这比你所做的更具可读性

DECLARE @gameprice NUMERIC(22, 6) 

IF EXISTS(SELECT Count(*) 
          FROM   tbl_game_price_by_date 
          WHERE  gameprice_date = CONVERT(DATE, Getdate())) 
  SELECT @gameprice = gameprice 
  FROM   tbl_game_price_by_date 
  WHERE  gameid = 10 
         AND gameprice_date = CONVERT(DATE, Getdate()) 

UPDATE tbl_amount_setting 
SET    calculated_amount = @gameprice 
WHERE  ref_game_id = 10 
试试看

试试看


SET computed\u AMOUNT=WHEN
CASE关键字在哪里?请在问题中添加错误消息。
SET computed\u AMOUNT=WHEN
CASE关键字在哪里?请在问题中添加错误消息。