私は他の誰かのプロジェクトに取り組んでいます。このようなクエリがあります: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'を使います。 –
by groupは単に冗長ではありません。両方のインスタンスで完全に不適切です。 – Strawberry