Привет, у меня есть запрос 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'
Запрос вернет правильные данные, когда первый запрос count_win будет соответствовать finish_pos =1
, но когда второй запрос не имеет данных для pl='1'
, он будет игнорировать первый запрос. Я хочу, чтобы общее количество результатов запроса возвращалось путем объединения как 1-го, так и 2-го.
Кажется, вы просто ищете
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);
Я думаю, вы также можете сделать это с помощью условной агрегации вместо фильтрации pl=1
в разделе where
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'