繁体   English   中英

SQL查询:如果存在,则删除ELSE更新

[英]SQL Query : IF exist delete ELSE update

美好的一天,

目前,Im很难确定是否可以在sql查询中使用IF ELSE函数。 我想删除具有相同位置和名称的行,如果不存在,则要更新。

      $sql = "IF EXISTS (SELECT * FROM location_tbl WHERE name = '$a' && location = 'Drawing Room')
                            DELETE FROM location_tbl WHERE name = '$a' 
                                ELSE
                                INSERT INTO location_tbl (id, name, datetime, location) VALUES ('', '$a' , NOW(),'Drawing Room')";

非常感谢您的帮助

您可以在SQL的SELECT部分​​中使用IF ELSE,而不是您想要的方式。

您可以使用2条SQL执行所需的操作-删除然后再插入。

在Oracle中,您可以使用MERGE语句,该语句可以有条件地进行INSERT,UPDATE和DELETE。 请参阅https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

我认为在您的情况下无需使用if-else。 您始终可以先删除现有记录,然后再插入新记录。 如果表中不存在记录,则delete语句不会从表中删除任何内容。

一种建议是使用php运行if语句:

$result = $mysqli->query("SELECT * FROM location_tbl WHERE name = '".$a."' AND location = 'Drawing Room'"); 
if($result->num_rows > 0 ){
    $mysqli->query("DELETE FROM location_tbl WHERE name = '".$a."'");
} else {
    $mysqli->query("INSERT INTO location_tbl (id, name, datetime, location) VALUES ('', '".$a."' , NOW(),'Drawing Room')");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM