sql make count()返回查询中的总行数

yv5phkfx  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(393)

我在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()任何东西时,它都会返回随机数据,而不是一条记录给出这个查询给出的记录总数,现在我尝试去掉大部分查询,只将“if”语句保留为select也会给出所需的结果,但是它仍然不允许我在count()方法中使用该值,是否有任何方法可以在不获取随机数据的情况下计算此查询中的记录>

am46iovg

am46iovg1#

你的条件聚合由内而外。。。使用 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

相关问题