How to limit values when using distinct

前端 未结 4 1936
暗喜
暗喜 2021-01-22 10:30

PHP

  SELECT DISTINCT bk.title AS Title, bk.year AS Year, aut.authorname AS Author, cat.category AS Category
         FROM book bk 

         JOIN book_category          


        
4条回答
  •  情话喂你
    2021-01-22 10:38

    The easiest way to achieve different data only in the columns you want is using GROUP BY clause. By default, it'll group the rows, depending on the value of the column, showing only distinct values so, if you want to group and show only different titles and categories, you should write your query as:

      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
    

    As you may see, no DISTINCT is used, but you'll get all books with distincts title and categories. The more fields you added into the GROUP BY clause, the more distinct data you'd get.

    Same way, if you only wanted list books by title, you should only leave bk.title in the GROUP BY clause

提交回复
热议问题