【发布时间】:2019-04-29 05:20:49
【问题描述】:
我正在尝试使用“INSERT INTO ... SELECT ON DUPLICATE KEY UPDATE 功能”,但我现在遇到了麻烦。
我想向“fruitProperty”表中插入数据。
我的查询如下:
START TRANSACTION;
SET @myVal1 := "";
SET @myVal2 := 0;
SET @myVal3 := 0;
SET @myVal4 := 0;
SET @myVal5 := 0;
SELECT masterIndex INTO @myVal1 FROM fruitMaster WHERE masterName = 'apple';
SELECT masterIndex INTO @myVal2 FROM fruitMaster WHERE masterName = 'banana';
SELECT masterIndex INTO @myVal3 FROM fruitMaster WHERE masterName = 'mango';
SELECT masterIndex INTO @myVal4 FROM fruitMaster WHERE masterName = 'melon';
SELECT masterIndex INTO @myVal5 FROM fruitMaster WHERE masterName = 'grape';
INSERT
INTO fruitProperty
(fruitID, masterIndex, cpValue)
SELECT A1.fruitID, A2.masterIndex, A2.cpValue
FROM (
SELECT A.fruitID
FROM fruit A
JOIN fruitProperty B ON A.fruitID = B.fruitID
WHERE B.masterIndex = @myVal1 AND B.cpValue = 1
) A1
CROSS JOIN
(
SELECT @myVal2 AS masterIndex, 1 AS cpValue
UNION
SELECT @myVal3, 1
UNION
SELECT @myVal4, 1
UNION
SELECT @myVal5, 1
) A2
ON DUPLICATE KEY UPDATE cpValue = cpValue + 1;
ROLLBACK;
我遇到了错误代码。
错误代码:1064 您的 SQL 语法有错误;检查 与您的 MariaDB 服务器版本相对应的手册 在第 21 行的“KEY UPDATE cpValue = 1”附近使用的语法
我的查询有什么问题?我真的不知道。。
谢谢。
【问题讨论】: