我想根据最大+和条件选择一些条目。
mytable
----------
id | col1 | col2
我想选择总和为col1&的所有条目col2大于或等于最大值减去X.(不要问我为什么:))
到目前为止,我设法通过以下方式获得总和(以下别名为“total”):
SELECT id,SUM(col1 + col2) AS total FROM mytable GROUP BY id;
我还设法得到总和的最佳值(虽然有ORDER BY / LIMIT解决方法):
SELECT id,SUM(col + col) as total FROM mytable GROUP BY id ORDER BY total DESC LIMIT 1;
但每当我尝试重新使用别名作为条件时(例如WHERE total> = ...),我会收到“未知列”错误
任何事情都会非常感激
答案 0 :(得分:6)
您对SUM
有一些误解。 SUM
是一个聚合函数,意味着它适用于许多记录,而不仅仅是一个记录
要计算每条记录的两个字段的总和,您应该只使用+
运算符。
SELECT id, col1+col2 AS 'total'
FROM T1
WHERE
(col1+col2+x) >=(SELECT MAX(col1+col2) from T1)
答案 1 :(得分:1)
如果您使用group by,则需要使用having子句:
SELECT id,SUM(col1+col2) as total FROM mytable GROUP BY id ORDER BY total HAVING total >= x