Mysql 如何构建X或Y所在的查询

Mysql 如何构建X或Y所在的查询,mysql,sql,where,having,Mysql,Sql,Where,Having,我的数据是名为sales的父表和名为sale\u line的子表。我想从sales表中选择所有记录,其中sale.customer\u id=X或SUM(sale\u lines.total)>=Y customer\u id条件将出现在WHERE子句中,在HAVING子句中有总和(sale\u line.total)>Y是有意义的。我的问题是如何在WHERE和HAVING子句之间有一个逻辑或。这可能吗?如果是,怎么做 我知道如何处理子查询,但我正在尝试开发一个自动查询生成解决方案,我希望避免处

我的数据是名为
sales
的父表和名为
sale\u line
的子表。我想从
sales
表中选择所有记录,其中
sale.customer\u id=X
SUM(sale\u lines.total)>=Y

customer\u id
条件将出现在
WHERE
子句中,在
HAVING
子句中有
总和(sale\u line.total)>Y
是有意义的。我的问题是如何在
WHERE
HAVING
子句之间有一个逻辑
。这可能吗?如果是,怎么做


我知道如何处理子查询,但我正在尝试开发一个自动查询生成解决方案,我希望避免处理子查询的复杂性。

您需要在
having
子句中执行此操作:

select . . .
from . . .
group by s.customer_id, . . .
having s.customer_id = X or sum(s.total) > Y;
查询可能如下所示:

select s.customer_id, sum(s.total)
from sales s
group by s.customer_id
having s.customer_id = X or sum(s.total) > Y;
由于
,您无法在聚合之前进行筛选

实际上,如果您希望从sales表(而不是聚合)中获取记录,那么类似这样的内容是合适的:

select s.*
from sales s
where s.customer_id = X or
      s.customer_id in (select s2.customer_id
                        from sales s2
                        group by s2.customer_id
                        having sum(s2.total) > Y
                       );