Причината да връща нула редове е, че групирате по стойност в таблица_1. Тъй като в таблица_1 няма стойности, няма редове за връщане. Казано по друг начин, ако сте върнали t1.any_col в заявката си от GROUP BY така:
SELECT `t1`.`any_col`, COUNT(`t2`.`name`)
FROM `table_1` `t1`
LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id`
WHERE `t1`.`another_column` = 123
GROUP BY `t1`.`any_col`
Какво ще се покаже за t1.any_col, когато няма редове? Единственият начин да постигнете това, което искате, е да обедините резултатите си с друга заявка, която проверява за липса на редове в таблица_1. В този пример използвам изгледа INFORMATION_SCHEMA просто за да имам нещо, спрямо което мога да направя запитване.
SELECT COUNT(`t2`.`name`)
FROM `table_1` `t1`
LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id`
WHERE `t1`.`another_column` = 123
GROUP BY `t1`.`any_col`
UNION ALL
SELECT 0
FROM INFORMATION_SCHEMA.TABLES
Where Not Exists( Select 1 From `table_1` )
LIMIT 1