SELECT p.place_id, p.place_name, c.city, placeCount.Cnt FROM places p INNER JOIN user_place up ON p.place_id = up.place_id INNER JOIN fa_user u ON up.user_id = u.id INNER JOIN city c ON p.city_id = c.id LEFT JOIN ( SELECT place_id, COUNT( DISTINCT user_id ) Cnt FROM user_place WHERE user_id <>53 GROUP BY place_id )placeCount ON p.place_id = placeCount.place_id WHERE up.user_id =53 LIMIT 0 , 30
你可以看看这样的东西
SELECT u.user_id, u.NAME, p.place_id, p.place_name, c.city_id, c.city_name, placeCount.Cnt FROM places p INNER JOIN user_place up ON p.place_id = up.place_id INNER JOIN users u ON up.user_id = u.user_id INNER JOIN city c ON p.city_id = c.city_id LEFT JOIN ( SELECT place_id, COUNT(DISTINCT user_id) Cnt FROM user_place WHERE user_id <> 43 GROUP BY place_id ) placeCount ON p.place_id = placeCount.place_id WHERE p.type_id = 2 AND up.user_id = 43