Vì bạn không muốn có giá trị bằng không cho các hàng không khớp của mình, đó là công việc cho LEFT JOIN
, như:
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`
Chúng tôi đang đếm t1.key
bởi vì đối với các hàng đã khớp, chúng sẽ giống nhau ở đầu tiên bảng (chứ không phải bảng thứ hai) - do đó, chúng ta nên nhóm theo nó - chứ không phải theo trường trong bảng thứ hai.
Mẹo :tránh đặt tên bảng / cột của bạn bằng các từ dành riêng cho mysql. Điều này sẽ giúp bạn tiết kiệm rất nhiều thời gian nếu bạn vô tình quên dấu gạch ngược.