$query = "SELECT posts.*
FROM map, posts, tags
WHERE map.tag_id = tags.id
AND (tags.name IN ('mysql', 'database'))
AND map.post_id = posts.id
GROUP BY posts.id
HAVING COUNT(posts.id) = 2";
我不明白最後一行。有人可以爲我解釋嗎?如果我沒有在那裏有什麼區別?幫我理解這個MySQL代碼
選擇*當你使用GROUP BY也是壞的風格,因爲它不會在大多數DBMS編譯,不會對MySQL的 – Dmitry 2009-11-14 00:59:40
任何預測的行爲BTW,現在當你問了幾個問題並得到答案,您可能需要將其中的一些標記爲「回答」您的問題(如果其中有任何問題) – Dmitry 2009-11-14 01:02:03
另外:'SELECT posts。*'是可以接受的,因爲'GROUP'在'posts.id '。假設這是主鍵,那麼''.post。*''在功能上依賴於'組列中的所有其他列。當您嘗試選擇在GROUPing列中沒有功能依賴關係的未聚合列時,只會在ANSI SQL中出現錯誤。你可能仍然認爲任何舊的SELECT *都可能是不好的風格,但這是另一回事...... – bobince 2009-11-14 03:24:22