sql >> Databasteknik >  >> RDS >> Mysql

hur man sorterar ordning på LEFT JOIN i SQL-fråga?

Testa att använda MAX med en GROUP BY .

SELECT u.userName, MAX(c.carPrice)
FROM users u
    LEFT JOIN cars c ON u.id = c.belongsToUser
WHERE u.id = 4;
GROUP BY u.userName;

Mer information om GROUP BY

Gruppera efter-satsen används för att dela upp de markerade posterna i grupper baserat på unika kombinationer av gruppen efter kolumner. Detta tillåter oss sedan att använda aggregerade funktioner (t.ex. MAX, MIN, SUM, AVG, ...) som kommer att tillämpas på varje grupp av poster i tur och ordning. Databasen returnerar en enda resultatpost för varje gruppering.

Till exempel, om vi har en uppsättning poster som representerar temperaturer över tid och plats i en tabell som denna:

Location   Time    Temperature
--------   ----    -----------
London     12:00          10.0
Bristol    12:00          12.0
Glasgow    12:00           5.0
London     13:00          14.0
Bristol    13:00          13.0
Glasgow    13:00           7.0
...

Om vi ​​sedan vill hitta den maximala temperaturen efter plats, måste vi dela upp temperaturposterna i grupperingar, där varje post i en viss grupp har samma plats. Vi vill sedan hitta maxtemperaturen för varje grupp. Frågan för att göra detta skulle vara följande:

SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;


  1. Användardefinierade MySQL-variabler i Laravel 3?

  2. Hur man väljer poster en efter en utan att upprepa

  3. Selleri Worker Databas Connection Pooling

  4. Lagring av affärslogik i databasen