在SELECT命令中为MySQL分配不工作

在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号线的飞行 守则: 分隔符$$ 使用喷雾器$$ 创

我正在尝试分配@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。。。结束块和更改分隔符 也就是说,您的函数的精简版和工作版可能看起来像

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是关于语法错误的,它有帮助吗?你的问题需要更多的帮助吗?