SQL使COUNT()返回查询中的总行数

时间:2018-04-10 14:38:17

标签: mysql sql count

我在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个结果,但由于某种原因,每次我尝试计数()任何它保持返回随机数据而不是1条记录给出此查询给出的总记录数,现在我试图得到摆脱大部分查询,只留下'if'语句作为选择也给出了所需的结果,但是它仍然不会让我在count()方法中使用那个值,有什么方法我可以数来自此查询的记录,无需获取随机数据>

1 个答案:

答案 0 :(得分:0)

您的条件聚合内部已完全转换...请在case内使用sum()表达式。

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