簡體   English   中英

Rails Active Record Mysql查找查詢HAVING子句

[英]Rails Active Record Mysql find query HAVING clause

有沒有一種方法可以使用其他方式使用HAVING子句而無需使用group by。

我正在使用Rails,以下是我所面臨的問題的示例場景。 在rails中,您可以使用Model.find(:all,:select,conditions,:group)函數獲取數據。 在此查詢中,我可以在:group參數中指定一個having子句。 但是,如果我沒有group by子句但想要在結果集中有一個hading子句怎么辦。

例如:讓我們查詢

從y中選擇sum(x)作為a,b,c,其中“ some_conditions”按b,c分組;

此查詢在一個字段上具有sum()聚合。 否,如果沒有要匯總的內容,那么我的結果應該是一個空集。 但是mysql返回一個NULL行。 所以這個問題可以通過使用解決

從y中選擇sum(x)作為a,b,其中“ some_conditions”按b分組,且NOT為NULL;

但是如果我沒有group by子句怎么辦? 如下查詢

在“ some_conditions”中從y中選擇sum(x)作為a,b;

所以如何指定sum(x)不應該為NULL?

在這種情況下將返回空集而不是NULL行的任何解決方案都將有所幫助,並且該解決方案也應在rails中可行。

我們可以使用子查詢來使這種條件與sumthin一起工作,如下所示

選擇* from((將sum(x)選擇為b FROM y,其中“ some_condition”作為subq),其中subq.b不為null;

但是通過sql / rails有沒有更好的方法呢?

子查詢是在SQL中處理這種情況的標准方法。 但是,我建議您不要使用子查詢或HAVING,而應檢查SUM(x)是否為NULL。 最好總是返回一個結果,這樣就不必檢查是否有結果。 如果該值為NULL,則您將知道沒有帶有NULL值的記錄。

您沒有提到的一件事,如果您不希望sum(x)為null,則可以執行以下操作:

SELECT IFNULL(SUM(x), 0) AS a FROM table

暫無
暫無

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

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