更新行,如果一个特定的列值不同,否则插入新行
问题描述:
UserId Name Age
1 Lisha 23
2 Ankur 21
3 Karan 22
对于特定的给定的用户ID,我想更新的时代,如果给定的年龄是不同的,那么目前的年龄。否则,如果UserId不存在,我想插入一个新行。
如何在单个SQL语句中执行此操作。
答
MySQL有一个整齐的语法,尽管它的方式正好相反 - 您定义了要插入的内容,并且如果生成重复的键错误,则可以定义您希望如何更新而不是数据:
INSERT INTO users
(userid, age)
ON DUPLICATE KEY UPDATE age = VALUES(age)
+0
它给语法错误。如果我运行这个, $ sql = INSERT INTO'user'('userid','name','age')VALUES(2,'ankur',23)重复键更新新增一行。 – karan
INSERT INTO表(用户ID,姓名,年龄) VALUES(3,卡兰,26) ON DUPLICATE KEY UPDATE年龄= 26; – Aditya
在Google中搜索此操作的关键字是UPSERT。您也可以搜索“MYSQL中的Oracle MERGE等效项”。我不知道答案,但检查这些。 –
用'insert on duplicate key update'声明,但是唯一索引的存在是至关重要的。如果没有这样的密钥,不要去读这 – Drew