2015-10-18 104 views
1

我有一个表更新行,如果一个特定的列值不同,否则插入新行

UserId Name Age 
1   Lisha 23 
2   Ankur 21 
3   Karan 22 

对于特定的给定的用户ID,我想更新的时代,如果给定的年龄是不同的,那么目前的年龄。否则,如果UserId不存在,我想插入一个新行。

如何在单个SQL语句中执行此操作。

+0

INSERT INTO表(用户ID,姓名,年龄) VALUES(3,卡兰,26) ON DUPLICATE KEY UPDATE年龄= 26; – Aditya

+0

在Google中搜索此操作的关键字是UPSERT。您也可以搜索“MYSQL中的Oracle MERGE等效项”。我不知道答案,但检查这些。 –

+1

用'insert on duplicate key update'声明,但是唯一索引的存在是至关重要的。如果没有这样的密钥,不要去读这 – Drew

回答

1

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

相关问题