我有以下表格:的MySQL GROUP BY三個用表
posts (post_id, content, etc)
comments (comment_id, post_id, content, etc)
posts_categories (post_category_id, post_id, category_id)
與此查詢:
SELECT `p`.*
, COUNT(comments.comment_id) AS cmts
, posts_categories.*
, comments.*
FROM `posts` AS `p`
LEFT JOIN `posts_categories`
ON `p`.post_id = `posts_categories`.post_id
LEFT JOIN `comments`
ON `p`.post_id = `comments`.post_id
GROUP BY `p`.`post_id`
上有POST_ID = 1,總共四個三點意見。在posts_categories中有兩行,都分配給post_id = 1。我在帖子中有四行。
但是,如果我查詢上面的語句,我會在post_id = 1處得到COUNT(comments.comment_id)
的結果6。這怎麼可能?我猜這個錯誤是在GROUP BY子句中的某處,但我無法弄清楚在哪裏。
有什麼建議嗎?
在mysql中,並不需要列出GROUP BY中的所有字段,但是這會導致上述問題,因此需要計數 – Unreason 2010-04-04 17:58:22
post_category_id怎麼辦?你是否嘗試過查詢。如果你不明白我的意思,請看@Adam Bernier的回答。 – lexu 2010-04-04 18:05:28
不適用於我,我省略了GROUP_CONCAT以簡化查詢。無論如何,謝謝 – Psaniko 2010-04-04 18:30:40