Tylko nie wiem co ten przykład ma udowodnić? W obu przypadkach COUNT(1) zwraca to samo co COUNT(*). Przynajmniej u mnie, na MySQL 5.5.32.
Kod
mysql> SELECT kategoria, count(1), count(*), COUNT(sub2.id_kategorii)
-> FROM
-> ( SELECT 1 id_kategorii, 'pierwsza' kategoria UNION ALL SELECT 2, 'druga' ) sub
-> LEFT JOIN
-> (SELECT 1 id_kategorii, 1 id_klienta UNION ALL SELECT 1 id_kategorii, 2 id_klienta ) sub2
-> ON sub.id_kategorii=sub2.id_kategorii
-> GROUP BY 1\G
*************************** 1. row ***************************
kategoria: druga
count(1): 1
count(*): 1
COUNT(sub2.id_kategorii): 0
*************************** 2. row ***************************
kategoria: pierwsza
count(1): 2
count(*): 2
COUNT(sub2.id_kategorii): 2
2 rows in set (0.00 sec)
mysql> SELECT kategoria, count(1), count(*), COUNT(sub2.id_kategorii)
-> FROM
-> ( SELECT 1 id_kategorii, 'pierwsza' kategoria UNION ALL SELECT 2, 'druga' ) sub
-> JOIN
-> (SELECT 1 id_kategorii, 1 id_klienta UNION ALL SELECT 1 id_kategorii, 2 id_klienta ) sub2
-> ON sub.id_kategorii=sub2.id_kategorii
-> GROUP BY 1\G
*************************** 1. row ***************************
kategoria: pierwsza
count(1): 2
count(*): 2
COUNT(sub2.id_kategorii): 2
1 row in set (0.00 sec)