0

如果该行像此 select 语句一样存在,我该如何删除。我尝试用删除替换选择,但它没有用。如果行存在,我需要删除并返回 1 的语句。或者,如果在表中找不到该行,则返回 0。

SELECT IF ( EXISTS (SELECT * FROM `cancellation` WHERE `ID`=2), 1, 0)  
4

2 回答 2

3

您应该执行两条语句。首先,您的删除:

DELETE FROM `cancellation` WHERE `ID` = 2 

要计数,请立即按照您的 DELETE 操作:

SELECT ROW_COUNT()

任何大于 0 的都将是成功删除。


更新:PHP 中的三值逻辑

如果您正在使用 PHP 并且想要使用一些技巧,请使用 null 值来指示 DELETE 过程失败。如果删除操作失败,PHP 的 mysqli_query 将返回 false,因此我们可以使用它来强制返回 NULL 值。

<?php
   function zapper ($row_id) {
      if ($result = mysqli_query($connection, "DELETE FROM `cancellation` WHERE `ID` = " . $row_id) === TRUE) {
         if (mysqli_affected_rows($connection) > 0) {
            // delete successful - some rows were deleted
            return TRUE;
         } else {
            // delete successful - no rows were deleted
            return FALSE;
         }
      } else {
         // delete unsuccessful
         return NULL;
      }
   }
?>
于 2013-10-22T16:19:44.183 回答
-2

删除查询始终返回
0 --> 未删除记录时
1 --> 成功删除时
如:
String sql="delete from tags where id=101;
flag=stmt.executeUpdate(sql);

于 2015-01-23T11:01:28.703 回答