在SELECT命令中为MySQL分配不工作
我正在尝试分配@lastupd变量。如下行所示: 选择@lastupd:=max`last\u edited\u time` 来自FlySpore_注释,其中task_id=taskID; 但请告诉我一个错误: 错误1064 42000:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'BEGIN的语法 设置@lastupd=0;选择@lastupd:=maxlast\u edited\u time from 2号线的飞行 守则: 分隔符$$ 使用喷雾器$$ 创建函数last_upd_timetaskID INT 开始 设置@lastupd=0; 从任务id=taskID的FlySpore\u注释中选择@lastupd:=max`last\u edited\u time`; 返回@lastupd; 终止 $$ 定界符; 你的直接错误与作业无关。它是由函数的无效定义引起的。您缺少指示函数返回类型的强制返回子句。看见 在您的案例中不需要使用变量,更不用说usersession变量了。只需返回查询结果。 既然你可以使用唯一的语句,那么就没有必要使用BEGIN。。。结束块和更改分隔符 也就是说,您的函数的精简版和工作版可能看起来像在SELECT命令中为MySQL分配不工作,mysql,sql,function,select,Mysql,Sql,Function,Select,我正在尝试分配@lastupd变量。如下行所示: 选择@lastupd:=max`last\u edited\u time` 来自FlySpore_注释,其中task_id=taskID; 但请告诉我一个错误: 错误1064 42000:您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用near'BEGIN的语法 设置@lastupd=0;选择@lastupd:=maxlast\u edited\u time from 2号线的飞行 守则: 分隔符$$ 使用喷雾器$$ 创
CREATE FUNCTION last_upd_time(_task_id INT)
RETURNS DATETIME -- mandatory clause
RETURN -- just return the result of the query
(
SELECT MAX(last_edited_time)
FROM flyspray_comments
WHERE task_id = _task_id
); -- use default delimiter since it's a one-statement function
这是演示
现在,如果出于某种原因想使用变量
使用本地会话,而不是用户会话。
使用“设置”或“选择”指定值。。。转换成语法。
看起来像
声明lastupd DATETIME默认值为NULL;-或0
设置lastupd=
选择最大上次编辑时间
来自Flyspore_的评论
其中task\u id=\u task\u id
;
或
声明lastupd DATETIME默认值为NULL;-0
选择最大上次编辑时间
最后一次
来自Flyspore_的评论
其中task_id=_task_id;
发布更多/完整的代码,您可以看到它说您在开始附近有错误。错误1064 42000是关于语法错误的,它有帮助吗?你的问题需要更多的帮助吗?