【发布时间】:2010-08-04 14:41:14
【问题描述】:
我想根据 max+sum 条件选择一些条目。
mytable
----------
id | col1 | col2
我想选择 col1 和 col2 之和大于或等于 sum 减去 X 的最大值的所有条目。(不要问我为什么 :))
到目前为止,我设法通过:
SELECT id,SUM(col1 + col2) AS total FROM mytable GROUP BY id;
我还设法获得了总和的 MAX(尽管使用 ORDER BY/LIMIT 解决方法):
SELECT id,SUM(col + col) as total FROM mytable GROUP BY id ORDER BY total DESC LIMIT 1;
但是,每次我尝试重新使用我的别名作为条件(例如 WHERE total >= ...)时,我都会收到 “未知列”错误
任何事情都将不胜感激
【问题讨论】:
-
对于其他有类似问题的人,
WHERE子句在您选择的表达式之前进行评估,以确定它甚至应该费心查看哪些行。HAVING在事后就像WHERE,所以虽然它可能会更慢,但如果您选择的内容与您正在评估的内容相同,它会很有用。在这种情况下,您只需使用HAVING total >= x。