Mariadb中同时使用with和insert ... values
Posted lxm-cnblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mariadb中同时使用with和insert ... values相关的知识,希望对你有一定的参考价值。
不能将with放在insert之前,否则会报以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'insert into table_name (id, name, ...) values ...\' at line xxx
正确做法是将with放在values之前:
insert into test (name, type)
with temp as (select type from test1 where id = 1)
values
(\'name1\', (select type from temp)),
(\'name2\', (select type from temp))
MariaDB 存储过程 - 在 INSERT 语句中出现错误“缺少 SELECT”
【中文标题】MariaDB 存储过程 - 在 INSERT 语句中出现错误“缺少 SELECT”【英文标题】:MariaDB stored proc - Getting an error 'Missing SELECT' on INSERT statement 【发布时间】:2016-08-25 11:00:41 【问题描述】:虽然我在 SQL Server 中创建了大量 proc,但我想开始使用 MariaDB,因此尝试在 MySQL Workbench 中创建下面的简单 proc。
我不断收到一条错误消息,指出表名后的开头 '(' 缺少 SELECT:
DELIMITER $$
drop procedure if exists usp_AddSentEmail$$
CREATE PROCEDURE usp_AddSentEmail (in pSender varchar(36)
,in pTo varchar(1000)
,in pSubject varchar(100)
,in pBody varchar(10000)
,in pRecordDT datetime)
BEGIN
INSERT INTO Emails('To','Subject','Body','Sender','RecordDT','Sent','SentDT')
VALUES (pTo,pSubject,pBody,pSender,pRecordDT,1,pRecordDT);
END$$
DELIMITER ;
也许我尝试了错误的谷歌搜索,但出现的只是分隔符错误。
【问题讨论】:
请注意,列不是字符串。 【参考方案1】:从插入查询中的列名中删除引号:
INSERT INTO Emails(To,Subject,Body,Sender,RecordDT,Sent,SentDT)
VALUES (pTo,pSubject,pBody,pSender,pRecordDT,1,pRecordDT);
【讨论】:
哈。你是天才:-) 谢谢。我不得不把 To 和 Subject 放在反引号中,但其余的都很好。以上是关于Mariadb中同时使用with和insert ... values的主要内容,如果未能解决你的问题,请参考以下文章
我更新到 MariaDB 10.2.20 以使用 CTE。在 phpMyAdmin 中仍然出现“无法识别的语句类型。(靠近 WITH)
MariaDB 触发器在同一张表上执行 UPDATE 和 INSERT
MariaDB 列存储 LAST_INSERT_ID() 替代