sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Hur man begränsar värden vid användning av distinkta

Det enklaste sättet att få fram olika data endast i de kolumner du vill ha är att använda GROUP BY klausul. Som standard grupperar den raderna, beroende på kolumnens värde, och visar endast distinkta värden, så om du vill gruppera och bara visa olika titlar och kategorier bör du skriva din fråga som:

  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

Som du kanske ser, ingen DISTINCT används, men du får alla böcker med distinkta titel och kategorier. Ju fler fält du lade till i GROUP BY klausul, desto mer distinkt data får du.

På samma sätt, om du bara ville lista böcker efter titel, bör du bara lämna bk.title i GROUP BY klausul



  1. Fatalt fel:Uncaught ArgumentCountError:För få argument för att fungera Admincategory::deletecategory(),

  2. Hämtar tidsstämpel för skapande av MySQL-rader från metadata?

  3. Generera skript med nya ID (även för beroenden)

  4. mysql:ORDER BY antal förekomster av ett element i en kolumn i mysql-tabellen