我正在进行插入查询,如果已经存在唯一键,则需要将大多数列更新为新值.它是这样的:
INSERT INTO lee(exp_id, created_by,
location, animal,
starttime, endtime, entct,
inact, inadur, inadist,
smlct, smldur, smldist,
larct, lardur, lardist,
emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct,
t.inact, t.inadur, t.inadist,
t.smlct, t.smldur, t.smldist,
t.larct, t.lardur, t.lardist,
t.emptyct, t.emptydur
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE ...;
//update all fields to values from SELECT,
// except for exp_id, created_by, location, animal,
// starttime, endtime
Run Code Online (Sandbox Code Playgroud)
我不确定该UPDATE子句的语法应该是什么.我如何引用该SELECT子句中的当前行?
我知道ON DUPLICATE KEY UPDATE如果已经存在该密钥的记录,您可以使用更新某个值,
我可以做这个:
INSERT INTO `tableName` (`a`,`b`,`c`) VALUES (1, 2, 3)
ON DUPLICATE KEY UPDATE `a`=1, `b`=2, `c`=3
Run Code Online (Sandbox Code Playgroud)
但是,如何在不必写出两次列和值的情况下执行此操作?
我对重复更新查询中的插入很困惑.我有MySQL表,结构如下:
如果我的table.person中存在id,或者在此表中插入新记录,我想为person更新some_text和some_other_text值.如果person_id不是PRIMARY,怎么办呢?
我需要为MS Access 2000编写SQL查询,以便在存在时更新行,但如果不存在则插入.
即
如果行存在...
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
Run Code Online (Sandbox Code Playgroud)
如果它不存在......
INSERT INTO Table1 VALUES (...)
Run Code Online (Sandbox Code Playgroud)
这可以在一个查询中完成吗?
(在MySQL中工作的ON DUPLICATE KEY UPDATE方法似乎不适用于此.)
我使用Node.js将值推送到 MySQL 表,例如:
for (var i = 0; i < data.length; i++) {
flattenedData.push([data[i].id, data[i].adult, data[i].backdrop_path, JSON.stringify(data[i].genre_ids), data[i].original_language, data[i].original_title, data[i].overview, data[i].popularity, data[i].poster_path, data[i].release_date, data[i].title, data[i].video, data[i].vote_average, data[i].vote_count]);
//console.log(flattenedData);
}
db.query("INSERT INTO movies (id, adult, backdrop_path, genre_ids, original_language, original_title, overview, popularity, poster_path, release_date, title, video, vote_average, vote_count ) values ?", [flattenedData], function (err, result) {
if (err) {
throw err;
}
else {
console.log('data inserted' + result);
}
});
Run Code Online (Sandbox Code Playgroud)
我想添加ON DUPLICATE KEY UPDATE到查询中,但我不断收到语法错误,有人可以告诉我正确的方法吗?