mysql查询问题

o2g1uqev  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(287)

嗨,我有一个mysql查询,如下所示:

SELECT COUNT(od.id)+IFNULL((SELECT COUNT(rmrs.id)
FROM ic_dd_results rmrs
WHERE rmd.horse_id = od.horse_mraid AND rmrs.finish_pos = '1'),0) as count_win
FROM ic_dd_old_data od
WHERE od.horse_mraid = '123123' AND od.pl='1'

当第一个查询计数匹配时,查询将返回正确的数据 finish_pos =1 ,但当第二个查询没有 pl='1' ,它将忽略第一个查询。我想查询结果返回的总和,结合第一和第二。

watbbzwu

watbbzwu1#

我认为你也可以通过条件聚合而不是过滤来做到这一点 pl=1where 条款

SELECT COUNT(CASE WHEN od.pl='1' THEN od.id END) + 
       IFNULL((SELECT COUNT(rmrs.id)
               FROM ic_dd_results rmrs
               WHERE rmd.horse_id = od.horse_mraid AND 
               rmrs.finish_pos = '1'),0) as count_win
FROM ic_dd_old_data od
WHERE od.horse_mraid = '123123'
wlzqhblo

wlzqhblo2#

看来你只是在找

select 
  (select count(*) from ic_dd_old_data where horse_mraid = 123123 and pl = 1) +  
  (select count(*) from ic_dd_results where horse_id = 123123 and finish_pos = 1);

相关问题