SQL 如果存在则更新,如果不存在则插入无效

SQL update if exist, insert if not exist not working

我想更新一条记录(如果它存在)或创建一条新记录(如果它尚不存在)但不知何故它抛出错误,我无法找出原因..

我想更新客户的状态(如果存在)或创建新客户(如果不存在)。

我的查询:

$sql = "SELECT CASE WHEN EXISTS ( SELECT * FROM sms WHERE number = '123456789' AND customer_id = '1' ) THEN UPDATE sms SET stat = '1' ELSE INSERT INTO sms (number, customer_id, stat) values ('+32485386902', '1', '1') END"

这会引发错误:

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near UPDATE sms SET stat = '1' ELSE INSERT INTO sms (number, customer_id, stat) value at line 1

但是,如果我将更新和插入更改为 1 和 2,如果存在则显示 1,如果不存在则显示 2。

谁能帮帮我:)?非常感谢!

将第二个密钥添加到 customer_id 使其工作:

$sqlsms = "INSERT INTO sms (number, customer_id, stat) VALUES('$phone', '$compID', '$smsPromo') ON DUPLICATE KEY UPDATE stat = '$smsPromo'";

在 SELECT 查询中,您始终必须有 FROM 子句。我建议你先写一个 SELECT 查询来知道记录是否存在,然后如果记录不存在你可以 运行 INSERT else UPDATE。你不能在子查询中使用 SELECT * FROM sms,这是错误的 sixaxe.