作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
长话短说,我应该在 GROUP BY 子句后面放置哪些字段?
SELECT questions.question_id, questions.title, questions.content, questions.view_count, questions.posted_on, users.user_id, users.group_id, users.username, users.first_name, users.last_name COUNT(answers.answer_id) AS answer_count
FROM (questions)
JOIN answers ON questions.question_id = answers.question_id
JOIN users ON questions.user_id = users.user_id
WHERE `questions`.`publish` = 'Y' AND `questions`.`deleted_at` IS NULL AND `users`.`blocked` = 'N'
GROUP BY questions.question_id
我应该将 SELECT 中提到的所有非聚合字段都放入其中,还是只放入其中一个字段即可? (例如,只是question_id)我很困惑,因为无论哪种方式,结果都是相同的。有什么区别?
网络上的教程似乎都给出了仅使用两个字段的示例,一个聚合字段和一个普通字段。
更新:好吧,看来我必须将它们全部放入才能获得准确的结果。这就带来了其他问题:准确度有多准确?难道一个人做得不好吗?对性能的影响如何?
最佳答案
“您需要放置所有非聚合列以获得准确的结果”
确实如此,但我想补充一点,您按照您希望的分组顺序放置所有列(这对您来说可能很重要?)。
编辑:准确意味着如果您不这样做,您的查询就会崩溃。关于性能,GROUP BY 中的字段越多,性能下降就越多,但这并不奇怪
关于mysql - MySQL GROUP BY 子句中应放置哪些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136310/
我是一名优秀的程序员,十分优秀!