在WHERE子句和OR中使用聚合

时间:2017-09-01 18:33:27

标签: mysql aggregate

我努力让我的查询工作但是没有成功:

SELECT column1, MIN(column2) AS min_column2
FROM table1
WHERE column4 = 'hi'
GROUP BY column_id
HAVING (column3 > 0 OR min_column2 > 0)

我需要min_column2使用OR,你会怎么做?

由于

1 个答案:

答案 0 :(得分:3)

你无法在哪里混音

SELECT column1, MIN(column2) AS min_column2
FROM table1
WHERE column3 > 0 

HAVING min_column2 > 

并且为了正确使用聚合函数,您应该使用group by ::

SELECT column1, MIN(column2) AS min_column2
FROM table1
WHERE column3 > 0 
GROUP By column1
HAVING min_column2 > 

不在聚合函数中的列的选择以及在group by中的引用是在sql中不推荐使用并且在最后一个版本的mysql中不允许

由于您更改了添加缺失组的问题并更改了新答案的规则

对结果进行处理,如果你想要对column3进行过滤,你也必须选择这个列

  SELECT column1, column3, MIN(column2) AS min_column2
  FROM table1
  WHERE column4 = 'hi'
  GROUP BY column1, column3
  HAVING (column3 > 0 OR min_column2 > 0)

您必须在组中引用您在聚合函数中不使用的选择列中的相同列