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

Funkcja MAX, w której klauzula mysql

Nie możemy odwołać się do wyniku funkcji agregującej (na przykład MAX() ) w WHERE klauzula tego samego SELECT .

Normatywnym wzorcem rozwiązywania tego typu problemów jest użycie widoku wbudowanego, mniej więcej tak:

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
  JOIN ( SELECT MAX(mx.id) AS max_id
           FROM mytable mx
       ) m
    ON m.max_id = t.id

To tylko jeden sposób na uzyskanie określonego wyniku. Istnieje kilka innych podejść do uzyskania tego samego wyniku, a niektóre z nich mogą być znacznie mniej wydajne niż inne. Inne odpowiedzi pokazują to podejście:

 WHERE t.id = (SELECT MAX(id) FROM ... )

Czasami najprostszym podejściem jest użycie ORDER BY z LIMIT. (Zauważ, że ta składnia jest specyficzna dla MySQL)

SELECT t.firstName
     , t.Lastname
     , t.id
  FROM mytable t
 ORDER BY t.id DESC
 LIMIT 1

Zauważ, że zwróci to tylko jeden wiersz; więc jeśli istnieje więcej niż jeden wiersz z tym samym identyfikatorem, to nie zwróci ich wszystkich. (Pierwsze zapytanie zwróci WSZYSTKIE wiersze, które mają ten sam identyfikator.)

To podejście można rozszerzyć, aby uzyskać więcej niż jeden wiersz, możesz uzyskać pięć wierszy, które mają najwyższe wartości identyfikatora, zmieniając je na LIMIT 5 .

Zauważ, że wydajność tego podejścia jest szczególnie zależna od dostępności odpowiedniego indeksu (np. z id jako KLUCZ PODSTAWOWY lub jako wiodąca kolumna w innym indeksie). Odpowiedni indeks poprawi wydajność zapytań przy użyciu wszystkich tych podejść.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak nadać ten sam numer seryjny dla grupy rekordów w mysql

  2. Jak zainstalować phpMyAdmin na zarządzanych kontach hostingowych

  3. Autostart MySQL Server w systemie Mac OS X Yosemite/El Capitan

  4. Czy istnieje sposób na uruchomienie MySQL w pamięci dla przypadków testowych JUnit?

  5. Utwórz diagram bazy danych w środowisku MySQL Workbench