必要な列でのみ異なるデータを取得する最も簡単な方法は、GROUP BY
を使用することです。 句。デフォルトでは、列の値に応じて行がグループ化され、個別の値のみが表示されるため、異なるタイトルとカテゴリのみをグループ化して表示する場合は、クエリを次のように記述します。
SELECT bk.title AS Title, bk.year AS Year, aut.authorname AS Author, cat.category AS Category
FROM book bk
JOIN book_category bk_cat
ON bk_cat.book_id = bk.bookid
JOIN categories cat
ON cat.id = bk_cat.category_id
JOIN books_authors bk_aut
ON bk_aut.book_id = bk.bookid
JOIN authors aut
ON aut.id = bk_aut.author_id
GROUP BY bk.title, cat.category
ORDER BY bk.title ASC
ご覧のとおり、DISTINCT
はありません が使用されますが、タイトルとカテゴリが異なるすべての書籍を入手できます。 GROUP BY
に追加したフィールドが増える 条項、より明確なデータを取得します。
同様に、タイトルごとのリストブックのみが必要な場合は、GROUP BY
にbk.titleのみを残す必要があります。 条項