Hãy thử cái này ( mà không cần sử dụng truy vấn con )
SELECT a.name, b.cars, count(c.id) as number
FROM users a
INNER JOIN data_tmp b
on a.who = b.who
LEFT JOIN data c
on a.who = c.who AND
a.name = c.name
WHERE a.who = 2
GROUP BY a.name, b.cars
điều này hoạt động trên các máy chủ khác nhau:
MSSQL SERVER @ SQLFIDDLE
MYSQL @ SQLFIDDLE