使用AVG设置无效使用组功能

时间:2015-01-07 17:19:02

标签: mysql sql set average

我想声明一个名为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)
;

2 个答案:

答案 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
相关问题