我想更新一条记录,如果它存在或者创建一条新记录,如果它还不存在但不知何故它会抛出一个错误而我找不到原因......
我希望更新客户的状态(如果不存在)或创建新客户(如果不存在)。
我的疑问:
$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 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法 在第1行
UPDATE sms SET stat = '1' ELSE INSERT INTO sms (number, customer_id, stat) value
附近使用
但是,如果我更改更新并插入1和2,则显示1(如果存在),如果不存在,则显示2。
任何人都可以帮助我:)非常感谢!
答案 0 :(得分:1)
向customer_id添加第二个密钥使其正常工作:
$ sqlsms =“INSERT INTO sms(number,customer_id,stat)VALUES('$ phone','$ compID','$ smsPromo')ON DUPLICATE KEY UPDATE stat ='$ smsPromo'”;
答案 1 :(得分:0)
在SELECT查询中,您始终必须具有FROM子句。我建议你先写一个SELECT查询来知道记录是否存在,然后如果记录不存在你可以运行INSERT else UPDATE。你不能在subquerys中使用SELECT * FROM sms
,这是错误的六分之一。