sql >> Database teknologi >  >> RDS >> Mysql

Hvad kan en aggregeret funktion i ORDER BY-sætningen?

Dine resultater er mere tydelige, hvis du rent faktisk vælger de samlede værdier i stedet for kolonner fra tabellen:

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

Dette vil returnere summen af ​​alle id'er. Dette er selvfølgelig et ubrugeligt eksempel, fordi aggregeringen altid kun vil skabe én række, og derfor er det ikke nødvendigt at bestille. Grunden til at du får en række qith-kolonner i din forespørgsel, er fordi MySQL vælger én række, ikke tilfældigt, men heller ikke deterministisk. Tilfældigvis er det den første kolonne i tabellen i dit tilfælde, men andre kan få en anden række afhængigt af lagermotor, primærnøgler og så videre. Kun aggregation i ORDER BY-sætningen er derfor ikke særlig nyttig.

Det, du normalt vil gøre, er at gruppere efter et bestemt felt og derefter bestille resultatsættet på en eller anden måde:

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

Nu er det en mere interessant forespørgsel! Dette vil give dig en række for hver frugt sammen med det samlede antal for den frugt. Prøv at tilføje nogle flere æbler, og bestillingen begynder faktisk at give mening:

Komplet tabel:

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

Forespørgslen ovenfor:

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

  1. Hvad er hurtigere - INSTR eller LIKE?

  2. opdatering og komprimering af sqlite-database i Android

  3. Hvordan får man min/max af to heltal i Postgres/SQL?

  4. Administration af brugerkonti, roller, tilladelser, godkendelse PHP og MySQL - Del 3