$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