Mysql 选择sum,其中sum

Mysql 选择sum,其中sum,mysql,sum,max,Mysql,Sum,Max,我想根据max+sum条件选择一些条目 mytable ---------- id | col1 | col2 我想选择col1和col2之和大于或等于sum减去X的最大值的所有条目。(不要问我为什么:) 到目前为止,我成功地通过以下方式获得了总额(以下简称“总额”): 我还成功地获得了总和的最大值OK(尽管采用了ORDER BY/LIMIT解决方案): 但是,每次我尝试将别名重新用作条件时(例如,WHERE total>=…),我都会收到一个未知列错误 如果您使用group by,您将需要使

我想根据max+sum条件选择一些条目

mytable
----------
id | col1 | col2
我想选择col1和col2之和大于或等于sum减去X的最大值的所有条目。(不要问我为什么:)

到目前为止,我成功地通过以下方式获得了总额(以下简称“总额”):

我还成功地获得了总和的最大值OK(尽管采用了ORDER BY/LIMIT解决方案):

但是,每次我尝试将别名重新用作条件时(例如,WHERE total>=…),我都会收到一个未知列错误


如果您使用group by,您将需要使用having子句,我们将非常感谢您所做的一切

SELECT id,SUM(col1+col2) as total FROM mytable GROUP BY id ORDER BY total HAVING total >= x

如果使用group by,则需要使用having子句:

SELECT id,SUM(col1+col2) as total FROM mytable GROUP BY id ORDER BY total HAVING total >= x

您对
SUM
有一些误解
SUM
是一个聚合函数,意味着它可以处理多条记录,而不仅仅是一条记录。
要计算每个记录两个字段的总和,应仅使用
+
运算符

SELECT id, col1+col2 AS 'total'
FROM T1
WHERE
(col1+col2+x) >=(SELECT MAX(col1+col2) from T1)

您对
SUM
有一些误解
SUM
是一个聚合函数,意味着它可以处理多条记录,而不仅仅是一条记录。
要计算每个记录两个字段的总和,应仅使用
+
运算符

SELECT id, col1+col2 AS 'total'
FROM T1
WHERE
(col1+col2+x) >=(SELECT MAX(col1+col2) from T1)

-1条件是两个字段的最大值减去X,而不仅仅是X。为什么要使用SUM?!你如何通过分组获得整个表的最大值?您必须使用内部查询-1条件是两个字段的最大值减去X,而不仅仅是X。为什么要使用SUM?!你如何通过分组获得整个表的最大值?您必须使用内部查询!事实上,我误解了求和函数。col+col1确实适用于总计,但是我仍然在where子句中得到“未知列'total'错误”。我尝试将total改为test(如果保留了单词,我尝试了不同的语法,我还简化了where子句,在>=,nothing,我就是不能让它工作。我怎么能帮你呢?确实我误解了SUM函数。col+col1对total有效,但我仍然得到了它“where子句中的未知列'total'错误。我已尝试将total更改为test。”(如果单词是保留的,我尝试了不同的语法,我还简化了where子句,在>=,nothing,我就是无法让它工作。我能在这里帮助您吗?对于其他有类似问题的人,
where
子句在您选择的表达式之前进行计算,以确定是哪一个。)它甚至应该费心去查看行。
拥有
就像是一个
,其中
在事实之后,所以虽然它可能会慢一些,但如果你选择的是与你正在评估的相同的东西,它是有用的。在这种情况下,你只需要使用
HAVING total>=x
。对于其他有类似问题的人,在评估之前就可以使用
WHERE
子句在您的选择中重新设置表达式,以确定它甚至应该费心查看哪些行。
拥有
就像是事后的
其中
,因此,尽管它可能会慢一些,但如果您选择的内容与您正在评估的内容相同,则它很有用。在这种情况下,您只需使用
拥有总计>=x