MySQL中ON DUPLICATE KEY UPDATE使用
2014-05-21 21:31
274 查看
今天做判断插入用到了MySQL中ON DUPLICATE KEY UPDATE,现在Mark以下!
如果你想做到数据库中没有数据的话插入数据、有数据的话更新数据,那么你可以选择ON DUPLICATE KEY UPDATE。
ON DUPLICATE KEY UPDATE能够在UNIQUE索引或PRIMARY KEY存在的情况下对旧行执行UPDATE操作。
例如:如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:
[sql] view plaincopyprint?
INSERT INTO
table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY
UPDATE c = c + 1,b = b - 1;
[sql] view plaincopyprint?
UPDATE table
SET c = c + 1,b = b - 1 WHERE a = 1;
例如:如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列):
[sql] view plaincopyprint?
INSERT INTO
TABLE (a,c) VALUES (1,3),(1,7)
ON DUPLICATE KEY
UPDATE c = c + 1;
执行后,c 的值会变为 4 (第二条与第一条重复, c 在原值上+1)。
[sql] view plaincopyprint?
INSERT INTO
TABLE (a,c) VALUES (1,3),(1,7)
ON DUPLICATE KEY
UPDATE c = VALUES(c);
执行后,c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7)。
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法
如果你想做到数据库中没有数据的话插入数据、有数据的话更新数据,那么你可以选择ON DUPLICATE KEY UPDATE。
ON DUPLICATE KEY UPDATE能够在UNIQUE索引或PRIMARY KEY存在的情况下对旧行执行UPDATE操作。
例如:如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:
[sql] view plaincopyprint?
INSERT INTO
table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY
UPDATE c = c + 1,b = b - 1;
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c = c + 1,b = b - 1;
[sql] view plaincopyprint?
UPDATE table
SET c = c + 1,b = b - 1 WHERE a = 1;
UPDATE table SET c = c + 1,b = b - 1 WHERE a = 1;
例如:如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列):
[sql] view plaincopyprint?
INSERT INTO
TABLE (a,c) VALUES (1,3),(1,7)
ON DUPLICATE KEY
UPDATE c = c + 1;
INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c = c + 1;
执行后,c 的值会变为 4 (第二条与第一条重复, c 在原值上+1)。
[sql] view plaincopyprint?
INSERT INTO
TABLE (a,c) VALUES (1,3),(1,7)
ON DUPLICATE KEY
UPDATE c = VALUES(c);
INSERT INTO TABLE (a,c) VALUES (1,3),(1,7) ON DUPLICATE KEY UPDATE c = VALUES(c);
执行后,c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7)。
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法
相关文章推荐
- MYSQL的REPLACE和ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- mysql 中 replace into 与 insert into on duplicate key update 的使用和不同点
- Thinkphp下使用Mysql的on duplicate key update功能
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL的ON DUPLICATE KEY UPDATE 使用
- mysql INSERT ... ON DUPLICATE KEY UPDATE语句在perl下的使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- mysql中使用ON DUPLICATE KEY UPDATE 示例
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- Mysql中Insert into xxx on duplicate key update和REPLACE INTO使用
- mysql "ON DUPLICATE KEY UPDATE" 的使用
- mysql中insert...on duplicate key update...使用
- MySQL中ON DUPLICATE KEY UPDATE使用
- mysql on duplicate key update 的使用