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

Numer wiersza dla wyników zapytania pogrupowanych według kolumny

To powinno być całkiem proste.

SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality, 
       @fk:=fk_id, rcv_date
FROM   (SELECT @row:=0) AS r, 
       (SELECT @fk:=0) AS f, 
       (SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t

Zamówiłem przez fk_id najpierw, aby upewnić się, że wszystkie klucze obce są ze sobą połączone (co jeśli tak naprawdę nie ma ich w tabeli?), następnie wykonałem preferowaną kolejność, tj. według rcv_date . Zapytanie sprawdza, czy nastąpiła zmiana w fk_id, a jeśli istnieje, to zmienna numeru wiersza jest ustawiana na 1, w przeciwnym razie zmienna jest zwiększana. Jest obsługiwane w instrukcji przypadku. Zauważ, że @fk:=fk_id odbywa się po sprawdzeniu wielkości liter, w przeciwnym razie wpłynie to na numer wiersza.

Edytuj: Właśnie zauważyłem twoje własne rozwiązanie, które akurat było takie samo, jak ja. Sława! :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przypisz istniejącego użytkownika do baz danych mysql

  2. MySQL :Uzyskaj maksymalne wartości grup

  3. Partycjonowanie MySQL:Wzrost wydajności Dla wielu partycjonowanych tabel. Czemu?

  4. Autouzupełnianie w MySQL pod Windows

  5. Czy możliwe jest wykonanie zapytania dla każdej bazy w bazach mysql i sumowanie lub łączenie wyników przy użyciu tylko środowiska poleceń mysql?