如果该行像此 select 语句一样存在,我该如何删除。我尝试用删除替换选择,但它没有用。如果行存在,我需要删除并返回 1 的语句。或者,如果在表中找不到该行,则返回 0。
SELECT IF ( EXISTS (SELECT * FROM `cancellation` WHERE `ID`=2), 1, 0)
您应该执行两条语句。首先,您的删除:
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;
}
}
?>
删除查询始终返回
0 --> 未删除记录时
1 --> 成功删除时
如:
String sql="delete from tags where id=101;
flag=stmt.executeUpdate(sql);