[英]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.