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

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

问题描述:

好日子,SQL查询:如果存在删除ELSE更新

现在我很难确定是否有可能在sql查询中有一个IF ELSE函数。我想用相同的位置和名称删除一行,然后UPDATE(如果不存在)。

 $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')"; 

非常感谢你对你的帮助

+0

你可能会在MySQL中使用'IF'声明这里一些帮助:https://*.com/questions/8763310/how -do-write-if-else-statement-in-a-mysql-query –

+1

你将如何更新一个不存在的字段? –

+0

@TamerShlash嗨,先生,我的意思是“如果存在 - 我想删除它,但如果不存在,我想插入它。 –

你可以有IF ELSE在SQL的SELECT一部分,而不是你想要的方式。

你可以在2个SQL中做你所需要的 - 删除然后插入。

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

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

一个建议是运行if语句使用PHP:

$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')"); 
}