簡體   English   中英

如何在X或HA上建立查詢

[英]How to build query WHERE X OR HAVING Y

我的數據是一個名為sales的父表和一個名為sale_lines的子表。 我想從sales表中選擇所有記錄,其中sale.customer_id=XSUM(sale_lines.total)>=Y

customer_id條件將放在WHERE子句中,並且在HAVING子句中具有SUM(sale_lines.total)>Y是有意義的。 我的問題是如何在WHEREHAVING子句之間進行邏輯OR 這可能嗎? 如果是這樣,怎么辦?

我知道如何使用子查詢來執行此操作,但是我正在嘗試開發一種自動查詢生成解決方案,並且我想避免處理子查詢的復雜性。

您需要在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;

由於存在or ,因此無法在聚合之前進行過濾。

實際上,如果您希望從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
                       );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM