簡體   English   中英

SQL make COUNT()返回查詢中的總行

[英]SQL make COUNT() return total rows in query

我在MySQL中有如下查詢(表名已更改):

SELECT 

t1.name,
t2.type,
if(data1 = "6", sum(coalesce(data2, 0) * coalesce(data3, 1)) as more_data

FROM table_main tm
    JOIN table1 t1 ON tm.t1_id = t1.id 
    JOIN table2 t2 ON tm.t2_id = t2.id
    WHERE day = '2018-01-01'
    GROUP BY t1.name, t2.type
    ORDER BY more_data DESC 

該查詢返回大約400個結果,但是由於某種原因,每次我嘗試count()任何東西時,它都會一直返回隨機數據,而不是1條記錄給出該查詢給出的記錄總數,現在我嘗試擺脫大多數查詢並僅保留'if'語句作為選擇也可以提供所需的結果,但是仍然不允許我在count()方法中使用該值,有什么方法可以對記錄進行計數此查詢沒有獲取隨機數據>

您的條件聚合被徹底淘汰了……在sum()使用一個case表達式代替。

SELECT 

t1.name,
t2.type,
sum(case when data1 = "6" then coalesce(data2, 0) * coalesce(data3, 1) else 0 end) as more_data

FROM table_main tm
    JOIN table1 t1 ON tm.t1_id = t1.id 
    JOIN table2 t2 ON tm.t2_id = t2.id
    WHERE day = '2018-01-01'
    GROUP BY t1.name, t2.type
    ORDER BY more_data DESC 

暫無
暫無

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

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