我想声明一个名为average的变量,该值应该是todolist中itemsdate-creationdate的平均值。
但是,如果我使用这些代码行,mysql会告诉我语法错误。
有人可以告诉我应该更改什么来在@average中存储正确的值吗?
SET @average = AVG(todoitem.completiondate-todoitem.creationdate) from todolist
right join todoitem on todoitem.id=todolist.id
;
SELECT name FROM todolist
right join todoitem on todoitem.id=todolist.id
WHERE (todoitem.completiondate-todoitem.creationdate > average)
;
答案 0 :(得分:1)
您在第一个查询中缺少select
:
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todolist right join
todoitem
on todoitem.id = todolist.id;
虽然我把它留在了,但join
似乎没必要。如果只使用一个表,为什么要进行连接?
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todoitem;
答案 1 :(得分:0)
您必须添加SELECT:
SET @average = (SELECT AVG(todoitem.completiondate-todoitem.creationdate))
from todolist
right join todoitem on todoitem.id=todolist.id
-- or
SELECT AVG(todoitem.completiondate-todoitem.creationdate) INTO @average
from todolist
right join todoitem on todoitem.id=todolist.id