Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co może zrobić funkcja agregująca w klauzuli ORDER BY?

Twoje wyniki będą bardziej przejrzyste, jeśli wybierzesz z tabeli wartości zbiorcze zamiast kolumn:

SELECT SUM(id) FROM plant ORDER BY SUM(id)

To zwróci sumę wszystkich identyfikatorów. Jest to oczywiście bezużyteczny przykład, ponieważ agregacja zawsze utworzy tylko jeden wiersz, stąd nie ma potrzeby porządkowania. Powodem, dla którego w zapytaniu jest wiersz qith, jest to, że MySQL wybiera jeden wiersz, nie losowo, ale też nie deterministycznie. Tak się składa, że ​​w twoim przypadku jest to pierwsza kolumna w tabeli, ale inne mogą otrzymać kolejny wiersz w zależności od silnika magazynu, kluczy podstawowych i tak dalej. Agregacja wyłącznie w klauzuli ORDER BY nie jest więc zbyt użyteczna.

To, co zwykle chcesz zrobić, to pogrupować według określonego pola, a następnie uporządkować zestaw wyników w jakiś sposób:

SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)

Teraz to ciekawsze zapytanie! To da ci jeden rząd dla każdego owocu wraz z całkowitą liczbą dla tego owocu. Spróbuj dodać więcej jabłek, a kolejność zacznie mieć sens:

Pełna tabela:

+----+--------+
| id | fruit  |
+----+--------+
|  1 | banana |
|  2 | apple  |
|  3 | orange |
|  4 | apple  |
|  5 | apple  |
|  6 | banana |
+----+--------+

Powyższe zapytanie:

+--------+----------+
| fruit  | COUNT(*) |
+--------+----------+
| orange |        1 |
| banana |        2 |
| apple  |        3 |
+--------+----------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. rake db:create - problemy z sortowaniem

  2. myisam umieścić blokadę tabeli na stole, nawet gdy mamy do czynienia z zapytaniem „wybierz”?

  3. MySQL UPDATE z SELECT SUM z innej tabeli

  4. Baza danych MySQL nie uruchamia się w XAMPP Manager-osx

  5. Jak znaleźć odrębne kolumny w zagnieżdżonym podzapytaniu w SQL?