gpt4 book ai didi

MySQL 语法 : "the right syntax to use near" - right in the beginning

转载 作者:行者123 更新时间:2023-11-30 22:59:32 29 4
gpt4 key购买 nike

我是一个 MySQL 新手,今天我尝试设置一个超过 5 行的 MySQL 调用。我不断收到语法错误,我尝试修复了几个小时,但我不知道问题出在哪里。这是代码:

USE myDatabase;

DELIMITER //
CREATE PROCEDURE MYPROC()
BEGIN

SET @ID = 1;
SET @maxID = 3;

CREATE TEMPORARY TABLE resultTable(v DOUBLE, ttc DOUBLE);

WHILE (@ID < @maxID) DO

INSERT partTable1.v, partTable2.ttc
INTO
resultTable
FROM
(SELECT * FROM
(((SELECT time_sec, v FROM speedTable WHERE (trip_id = @ID)) as partTable1)
INNER JOIN
((SELECT time_sec, ttc FROM sightsTable WHERE (trip_id = @ID)) as partTable2) ON
(0.04 > abs(partTable1.time_sec - partTable2.time_sec)))
);


SET @ID := @ID + 1;
END WHILE;
END //
DELIMITER;

CALL MYPROC();

SELECT * FROM resultTable LIMIT 100;

是否有明显需要更正的地方?

更新 1:在“CREATE..”语句中添加了分号,现在前三个语句都可以。

更新 2:增加了 3 个分号!

更新 3:按照建议使其成为一个函数 + 单独的函数调用。错误消息已更改!

Update4:我修复了两个答案中提到的问题。那里还是有问题。请参阅上面的更新代码和下面的错误消息。

更新的错误信息:

ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the ma
nual that corresponds to your MySQL server version for the right syntax to use n
ear ' partTable2.ttc
INTO
resultTable
FROM
(SELECT * FROM
(((SELE' at line 11

亲切的问候,西奥

最佳答案

流控制语句,其中 WHILE 是一个,只能在存储过程中使用,但您正试图通过控制台将其用作普通查询。

如果您绝对必须走这条路(使用 mysql 而不是应用程序语言),请使用您想要的代码创建一个存储过程,然后调用它。

创建过程如下所示:

DELIMITER //
CREATE PROCEDURE MYPROC()
BEGIN
WHILE (@ID < @maxID) DO
SET @partTable1 = (SELECT time_sec, v FROM speedTable WHERE (trip_id = @ID));
SET @partTable2 = (SELECT time_sec, ttc FROM sightsTable WHERE (trip_id = @ID));

INSERT v, ttc INTO resultTable FROM
(@partTable1 INNER JOIN @partTable2 ON
(0.04 > abs(partTable1.time_sec - partTable2.time_sec)));

SET @ID := @ID + 1;
END WHILE;
END//
DELIMITER ;

然后调用它:

CALL MYPROC();

查看此 SQLFiddle此工作的简化版本。

请注意,您确实有一个语法错误:

@ID = @ID + 1; -- incorrect syntax
SET @ID := @ID + 1; -- correct

关于MySQL 语法 : "the right syntax to use near" - right in the beginning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24698772/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com