SET无效使用组功能使用AVG

SET invalid use of group function using AVG

我想声明一个变量叫average,应该是todolist中项目的完成日期-创建日期的平均值。

但是,如果我使用这些代码行,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)
;

您在第一个查询中缺少 select

select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todolist right join
     todoitem
     on todoitem.id = todolist.id;

虽然我将其保留,但 join 似乎没有必要。如果您只使用一个 table,为什么要进行连接?

select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todoitem;

您必须添加 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