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

Vnořený příkaz Select v připojení MYSQL

Tento typ dotazu dělám jinak, s připojením k vyloučení místo poddotazu. Chcete najít řádky B, které mají maximální čas pro dané ID; jinými slovy, kde žádný jiný řádek nemá větší čas a stejné ID.

SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
LEFT OUTER JOIN B AS B2 ON B.ID = B2.ID AND B.Time < B2.Time
WHERE B2.ID IS NULL

Můžete také použít odvozenou tabulku , který by měl fungovat lépe než použití korelovaného poddotazu.

SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
JOIN (SELECT ID, MAX(Time) AS Time FROM B GROUP BY ID) AS B2
  ON (B.ID, B.Time) = (B2.ID, B2.Time)

P.S.:Přidal jsem greatest-n-per-group štítek. Tento typ otázek SQL se na Stack Overflow objevuje každý týden, takže můžete sledovat tuto značku a zobrazit desítky podobných otázek a jejich odpovědí.




  1. Jak vypočítat celkové hodiny cesty mezi městem x a y a naopak

  2. Nepodařilo se ověřit nově vytvořené připojení

  3. Chyba Oracle ORA-28759:selhání při otevření souboru při požadavku na balíček utl_http

  4. Co musím udělat, abych otevřel adresy URL se speciálními znaky