我有这个问题。
Job
在mysql workbench上执行它时会显示一个语法错误,表示"意外选择"在A行。
但是,由于查询是正确的,当我执行它时,它确实执行并返回正确的结果。
当我尝试创建一个包含完全相同的东西的过程时,它无法编译。源代码是这样的:
Job[]
显示的消息是"对象的DDL语句包含语法错误。" 这是我在做错的事情,还是mysql workbench的错误?
答案 0 :(得分:1)
由于同时修复了MySQL语法错误*,因此出现此错误。请尝试使用最新的Workbench版本(目前是WB 8.0.11 RC,请参阅下载页面上的“开发版本”)。这应该适合你。
(*)MySQL Workbench使用ANTLR4来解析SQL代码。这需要MySQL语法来生成解析器。
答案 1 :(得分:0)
您的查询在语法上是正确的。它可能是一个工作台的错误。进入存储过程,您应该能够使用该查询创建它。尝试使用以下查询创建SP。就我而言,我可以使用它创建SP。复制此查询在工作台中打开一个新的查询编辑器并将其粘贴到那里,选择全部并按Ctrl + Shift + Enter
USE `YOUR_DB`;
DROP procedure IF EXISTS `proc_sample`;
DELIMITER $$
USE `YOUR_DB`$$
CREATE DEFINER=`admin`@`%` PROCEDURE `proc_sample`()
BEGIN
SELECT distinct c.reportingDate, c.clientId
FROM clients AS c
WHERE NOT EXISTS
( SELECT 1
FROM accounts_europe AS e
WHERE e.reportingDate = c.reportingDate
AND e.clientId = c.clientId
union
SELECT 1
FROM accounts_usa AS u
WHERE u.reportingDate = c.reportingDate
AND u.clientId = c.clientId
) ;
END$$
DELIMITER ;