sql >> Databáze >  >> RDS >> Mysql

jak seřadit pořadí LEFT JOIN v dotazu SQL?

Zkuste použít MAX s 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;

Další informace o GROUP BY

Skupina podle klauzule se používá k rozdělení vybraných záznamů do skupin na základě jedinečných kombinací skupiny podle sloupců. To nám pak umožňuje používat agregační funkce (např. MAX, MIN, SUM, AVG, ...), které budou postupně aplikovány na každou skupinu záznamů. Databáze vrátí jeden záznam výsledku pro každé seskupení.

Pokud například máme sadu záznamů představujících teploty v čase a umístění v tabulce, jako je tato:

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
...

Pokud pak chceme najít maximální teplotu podle umístění, pak musíme teplotní záznamy rozdělit do seskupení, kde každý záznam v určité skupině má stejné umístění. Potom chceme najít maximální teplotu každé skupiny. Dotaz k tomu by byl následující:

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


  1. Vyhledejte v databázi Microsoft SQL Server uložená data

  2. 7 faktů o synonymech SQL Server, která byste měli vědět

  3. Vytvoření vysoce dostupné databáze pro Moodle pomocí PostgreSQL

  4. oracle varchar do čísla