我想更新一条记录(如果它存在或创建一条新记录,如果它不存在但不知何故它会抛出一个错误,我找不到原因)。SQL更新是否存在,如果不存在则插入不起作用
我想更新客户的状态(如果存在)或创建新客户(如果不存在)。
我的查询:
$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如果没有。
任何人都可以帮助我:)?非常感谢!
也许我错了,但我认为SELECT会返回列并且不执行任何INSERT,UPDATE或DELETE查询。但是,使用MySQL,您可以使用REPLACE关键字来解决您的问题。但请记住,该解决方案将仅在mySQL环境中可用(如果您更改了RDBMS,则不起作用)。 –
使数字成为主键,然后使用'insert into ... on duplicate update'。 – chris85
除了'$ sql' var ..其中是'PHP'和'if-statement'? –