我有一個左連接到一個表,要算從它的列由父表的列分組後:MySQL的左連接數
SELECT * , COUNT(list.id) AS listcount, COUNT(uploads.id) AS uploadcount
FROM members
LEFT JOIN lists ON members.id= list.mid
LEFT JOIN uploads ON members.id= uploads.mid
GROUP BY members.id
假設用戶可以有列表或上傳基於用戶的類型。那麼上面的查詢就夠用了嗎?如果不是爲什麼?
或者我必須使用此查詢嗎?
SELECT * , l.listcount, u.uploadcount
FROM members
LEFT JOIN (select count(lists.id) as listscount,mid from lists group by mid) as l
on l.mid = m.id
LEFT JOIN (select count(uploads.id) as uploadscount
,mid from uploads group by mid) as u on u.mid = m.id
GROUP BY members.id
或相關的子查詢?
SELECT *,
(select count(lists.id) as listscount from lists as l where l.mid = m.id
group by mid) as listcount
(select count(uploads.id) from uploads as u where u.mid = m.id
group by mid) as uploadscount
FROM members
GROUP BY members.id
哪個是最好的解決方案?
夠好,夠用了麼?你有沒有得到理想的結果,並在合理的時間內得到它們?那麼是的,否則不。 – Marcus
總是推薦使用* EXPLAIN * http://dev.mysql.com/doc/refman/5.1/de/explain.html – aurora