【问题标题】:How to use SQL conditional statements如何使用 SQL 条件语句
【发布时间】:2011-01-08 22:23:03
【问题描述】:

在执行更新查询时,我需要根据列中的值删除一行。代码如下:

 UPDATE tag SET tag_count = tag_count - 1 WHERE tag_id = 1
 IF tag_count < 1
 delete from tag where tag_id = 1

这里的这个查询给了我一个错误。

编辑 我正在使用带有 C# 和 sql server 的内联 sql

【问题讨论】:

    标签: sql sql-server conditional-statements


    【解决方案1】:

    通常,在这些情况下,最好的选择是将 UPDATE 和 DELETE 语句包装在事务中:

    BEGIN TRANSACTION;
    
    UPDATE tag SET tag_count = tag_count - 1 WHERE tag_id = 1
    DELETE from tag where tag_id = 1 and tag_count < 1;
    
    COMMIT TRANSACTION;
    

    【讨论】:

    • 很好的答案,当声明性方法可用时,最好避免使用程序方法。仅将条件和其他控制流结构用作存储过程中的最后手段。
    • @Luke101:是的,当然,它会起作用。由于您使用的是 C#,您可能需要查看这个使用与您类似的事务的简短示例:aspnettutorials.com/tutorials/database/…
    【解决方案2】:

    嗯,您是否尝试过使用 Begin 和 End?

     UPDATE tag 
     SET tag_count = tag_count - 1 
     WHERE tag_id = 1
    
     IF tag_count < 1
         BEGIN
           DELETE FROM tag 
           WHERE tag_id = 1
         END
    

    【讨论】:

    • 在这种情况下,您仍然需要在条件语句之前使用SELECT tag_count FROM tag WHERE tag_id=1。但是,这不是必需的,因为您可以轻松地在 DELETE 语句中指定条件。
    • 当我尝试此代码时,sql server 无法将 IF 条件中的“tag_count”识别为有效列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多