相关疑难解决方法(0)

On Duplicate Key Update与insert相同

我已经四处搜索,但没有找到是否可能.

我有这个MySQL查询:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
Run Code Online (Sandbox Code Playgroud)

字段ID具有"唯一索引",因此不能有两个.现在,如果数据库中已存在相同的ID,我想更新它.但是我真的必须再次指定所有这些字段,例如:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8
Run Code Online (Sandbox Code Playgroud)

要么:

INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)
Run Code Online (Sandbox Code Playgroud)

我已经在插入中指定了所有内容......

一个额外的说明,我想使用工作来获取ID!

id=LAST_INSERT_ID(id)
Run Code Online (Sandbox Code Playgroud)

我希望有人能告诉我最有效的方法是什么.

mysql on-duplicate-key

147
推荐指数
7
解决办法
24万
查看次数

从查询中插入结果集时,MySQL ON DUPLICATE KEY UPDATE

我从tableONE查询并尝试将结果集插入tableTWO.这有时会导致tableTWO中出现重复键错误.所以我想ON DUPLICATE KEY UPDATE使用tableONE结果集中的新确定值,而不是忽略它ON DUPLICATE KEY UPDATE columnA = columnA.

INSERT INTO `simple_crimecount` (`date` , `city` , `crimecount`)(
    SELECT 
        `date`, 
        `city`,
        count(`crime_id`) AS `determined_crimecount`
    FROM `big_log_of_crimes`
    GROUP BY `date`, `city`
) ON DUPLICATE KEY UPDATE `crimecount` = `determined_crimecount`;
# instead of [ON DUPLICATE KEY UPDATE `crimecount` = `crimecount`];
Run Code Online (Sandbox Code Playgroud)

它返回一个错误说明如下

Unknown column 'determined_crimecount' in 'field list'
Run Code Online (Sandbox Code Playgroud)

mysql resultset duplicates insert-update

11
推荐指数
1
解决办法
5268
查看次数