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

Funkcja MySQL Max mieszająca wiersze

Potrzebujesz GROUP BY klauzula z agregacją MAX() . MySQL pozwala to pominąć (gdzie inne RDBMS zgłaszałyby błędy), ale z nieokreślonymi wynikami, które widzisz. Można to obsłużyć, dołączając do podzapytania, które zwraca zgrupowane rev na id .

SELECT 
  r.id,
  r.state,
  maxrev.rev
FROM
  VIEW_data r
  /* INNER JOIN against subquery which returns MAX(rev) per id only */
  JOIN (
    SELECT id, MAX(rev) AS rev
    FROM VIEW_data GROUP BY id
  /* JOIN is on both id and rev to pull the correct value for state */
  ) maxrev  ON r.id = maxrev.id AND r.rev = maxrev.rev
WHERE r.id = 1

http://sqlfiddle.com/#!2/4f651/8

Powyższe zwróci max rev wartość dla dowolnego id . Jeśli jesteś pewny potrzebujesz tylko jednego wiersza przefiltrowanego przez WHERE klauzula zamiast MAX() na grupę, spójrz na drugą odpowiedź, która wykorzystuje ORDER BY &LIMIT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Istniejące praktyki/wytyczne dotyczące tworzenia nieznormalizowanych tabel podczas procesu normalizacji?

  2. Zapytanie SQL sprawdzające, czy nazwa zaczyna się i kończy na samogłoskę

  3. Zapisz GeoDataFrame w bazie danych SQL

  4. zdobądź kolejne rekordy w mysql

  5. Laravel 'nie może znaleźć sterownika (SQL:wstaw do...'