我有这样的查询,不知道为什么它给了我错误。我想创建表,如果它尚未创建,如果它已创建,然后截断它,然后插入该表中的以下
CREATE TABLE IF NOT EXISTS
`(temp)_v5_userInfo_Netsprint_Data_import`
(
onlineId VARCHAR(255),
paramId INT,
paramValue INT
)
TRUNCATE TABLE
`(temp)_v5_userInfo_Netsprint_Data_import`
INSERT INTO
`(temp)_v5_userInfo_Netsprint_Data_import`
SELECT
`ui`.`onlineId`, `uin`.`paramId`, `uin`.`paramValue`
FROM
`(temp)v5_userInfo_COLD` `ui`
JOIN
`v5_(readOnly)userInfo_number` `uin`
ON
`uin`.`userId` = `ui`.`id`
;
答案 0 :(得分:0)
前两个语句缺少分隔符";" 添加它们就可以了。
答案 1 :(得分:0)
这有两个因素。首先,正如@krishKM所说,你丢失了分号。陈述应该是:
CREATE TABLE IF NOT EXISTS `(temp)_v5_userInfo_Netsprint_Data_import`
(
onlineId VARCHAR(255),
paramId INT,
paramValue INT
);
TRUNCATE TABLE `(temp)_v5_userInfo_Netsprint_Data_import`;
INSERT INTO `(temp)_v5_userInfo_Netsprint_Data_import`
SELECT `ui`.`onlineId`,
`uin`.`paramId`,
`uin`.`paramValue`
FROM `(temp)v5_userInfo_COLD` `ui`
JOIN `v5_(readOnly)userInfo_number` `uin` ON `uin`.`userId` = `ui`.`id`;
第二,验证将执行此语句的用户的权限。 TRUNCATE
requires DROP privilege since MySQL 5.1.6
我的猜测是您的用户具有DATA + CREATE权限,但这些权限还不够。
如果添加drop权限是一个showstopper,一种可能的解决方法是执行
DELETE FROM `(temp)_v5_userInfo_Netsprint_Data_import`;
当然,这比较慢。