Grunden til at det returnerer nul rækker er, at du grupperer på en værdi i tabel_1. Da der ikke er nogen værdier i tabel_1, er der ingen rækker at returnere. Sagt på en anden måde, hvis du returnerede t1.any_col i din forespørgsel fra GROUP BY sådan:
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`
Hvad ville blive vist for t1.any_col, når der ikke var nogen rækker? Den eneste måde at opnå det, du ønsker, er at forene dine resultater med en anden forespørgsel, der kontrollerer, om der ikke er nogen rækker i tabel_1. I dette eksempel bruger jeg visningen INFORMATION_SCHEMA simpelthen for at have noget, jeg kan forespørge efter.
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