SQL查询:IF存在删除ELSE更新

时间:2017-12-03 03:52:45

标签: php sql database

美好的一天,

现在我很难确定是否可以在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')";

非常感谢您的KIND HELP

3 个答案:

答案 0 :(得分:0)

您可以在SQL的SELECT部分​​使用IF ELSE,而不是按照您希望的方式使用IF ELSE。

您可以在2个SQL中执行所需操作 - 删除然后插入。

在Oracle中,您可以使用MERGE语句,该语句可以有条件地INSERT,UPDATE和DELETE。 请参阅promise

答案 1 :(得分:0)

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

答案 2 :(得分:0)

一个建议是使用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')");
}