我正在处理别人的项目。有这样的查询:我应该在使用IN子句时使用GROUP BY吗?
SELECT posts.id, posts.title, posts.body, posts.keywords
FROM posts
INNER JOIN pivot ON pivot.post_id = posts.id
INNER JOIN tags ON tags.id = pivot.tag_id
WHERE tags.name IN (:keywords)
GROUP BY posts.id
这项新政策是=
更换IN
。所以,我写的查询看起来是这样的:
SELECT posts.id, posts.title, posts.body, posts.keywords
FROM posts
INNER JOIN pivot ON pivot.post_id = posts.id
INNER JOIN tags ON tags.id = pivot.tag_id
WHERE tags.name = :keyword
GROUP BY posts.id
现在我想知道的,是GROUP BY
在这种情况下,多余的?我这样说是因为我认为GROUP BY
的原因是省略了每个关键字匹配的重复帖子。
集团的,对于像记录匹配。它与IN命令完全不同。 – Chuck
'GROUP BY'在这两种错误地使用,并且可以删除重复记录为不正确使用的副作用。它用于MIN(),MAX(),COUNT(),SUM()等聚集。要对这些进行重复数据删除,请使用“SELECT DISTINCT”。 –
Group by不是简单多余的;在这两种情况下完全不合适 – Strawberry