Da Sie Nullwerte für Ihre nicht übereinstimmenden Zeilen wollen, ist es eine Arbeit für LEFT JOIN
, wie:
SELECT
t1.*,
IF(t2.`key` IS NULL, 0, COUNT(t1.`key`)) AS t2_row_count
FROM
t1
LEFT JOIN t2
ON t1.id=t2.id
AND
t1.category=t2.category
GROUP BY
t1.`key`
Wir zählen t1.key
denn für übereinstimmende Zeilen werden sie zuerst gleich sein Tabelle (und nicht zweite) - daher sollten wir danach gruppieren - und nicht nach Feld in der zweiten Tabelle.
Tipp :Vermeiden Sie es, Ihre Tabellen/Spalten mit mysql-reservierten Wörtern zu benennen. Dies spart Ihnen viel Zeit, wenn Sie versehentlich Backticks vergessen.