我需要你的小帮助,我想更新现有记录,如果它已经存在于表中否则插入新记录。我没有使用Where
子句中的主键列。在MySql查询中需要帮助INSERT IF NOT EXISTS否UPDATE
每次它在表中插入新的记录具有相同的列1和列2值。
我得到了很少的回应,就像使用REPLACE一样。但REPLACE将适用于唯一/主键的情况,否则插入新记录。
我已经使用了以下查询
方法1:
IF EXISTS (select * from mytable3 WHERE field1 = 'A') THEN
BEGIN
UPDATE mytable3
SET (field1 ='A', field2 = 'DD')
WHERE field1 = 'A'
END
ELSE
BEGIN
INSERT INTO mytable3 (field1, field2) VALUES ('A', 'DD')
END
方法2:
REPLACE mytable3 (field1, field2) VALUES ('A', 'DD');
表结构:
CREATE TABLE mytable3
(
users int(11) NOT NULL AUTO_INCREMENT,
field1 varchar(10),
field2 varchar(10),
PRIMARY KEY(users)
);
insert into mytable3 (field1, field2) values('A', 'AA');
insert into mytable3 (field1, field2) values('B', 'BB');
insert into mytable3 (field1, field2) values('C', 'CC');
注:每次将新记录插入表中的相同字段1和字段2的值
-------------------------原问题------------------
我很努力地写MySql查询插入新的记录,如果不存在,否则更新现有的记录。但我面临的语法错误如下:
错误代码:1064.您的SQL语法错误;检查对应于你的MySQL服务器版本的权利 语法使用附近的 手册 'IF EXISTS(SELECT * FROM wnduty。
parcel-status-log
WHEREparcel-id
= 1和'SH' 在行1
SQL查询如下图所示:
IF EXISTS(SELECT * FROM wnduty.`parcel-status-log` WHERE `parcel-id` = 1 AND `shipping-status-id` = 4)
THEN
BEGIN
UPDATE wnduty.`parcel-status-log` SET (`status-date` ='2016-06-10 10:41:58', `is-synced`= 3)
WHERE `parcel-id` = 1 AND `shipping-status-id` = 4
END
ELSE
BEGIN
INSERT INTO wnduty.`parcel-status-log` (`parcel-id`,`shipping-status-id`, `is-synced`,`status-date`)
values(1, 4, 1, '2016-06-10 10:41:58')
END
END IF
我也低于查询,但仍语法错误尝试..
INSERT INTO wnduty.`parcel-status-log` (`parcel-id`, `shipping-status-id`, `is-synced`, `status-date`) values(1, 4, 1, '2016-06-10 10:41:57')
ON DUPLICATE KEY UPDATE
`status-date` ='2016-06-13 11:41:58',`is-synced` = 3, `shipping-status-id` = 4 ;
我使用如下的MySQL版本:
- innodb_version 5.7.12
- PROTOCOL_VERSION 10
- version_compile_os Win64的
的可能的复制,如果不存在'in MySQL?](http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql) – Scott
可能是你不可能的 - – coder771
每次插入新记录时更新现有的。 问题未解决 – skt