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

mysql - dołączanie do pierwszego i ostatniego rekordu według typu grupy?

Użyj funkcji mysql "funky" GROUP BY bez agregując inne kolumny, co po prostu zwraca pierwszą wiersz grupy. Problemem staje się wtedy ułożenie wierszy we właściwej kolejności przed korzystając z tej funkcji, zazwyczaj za pomocą zapytania z aliasem.

Takie podejście pozwala uniknąć wszelkich skorelowanych podzapytań (zapytań na wiersz) i wymaga tylko dwóch przejść nad tabelą (po jednym dla każdego kierunku porządkowania):

select x2.type, x2.dat as first_dat, y2.dat as last_dat
from (select *
  from (select type, dat
    from so8735514
    order by 1, 2) x1
  group by 1) x2
join (select *
  from (select type, dat
    from so8735514
    order by 1, 2 desc) y1
  group by 1) y2 on y2.type = x2.type;

Kod testowy:

create table so8735514 (idx int, type text, dat text);
insert into so8735514 values
(0, 'a', 'foo1'),
(1, 'b', 'foo2'),
(2, 'c', 'foo3'),
(3, 'a', 'foo4'),
(4, 'b', 'foo5'),
(5, 'c', 'foo6'),
(6, 'a', 'foo7'),
(7, 'b', 'foo8'),
(8, 'c', 'foo9');

Wyjście:

+------+-----------+----------+
| type | first_dat | last_dat |
+------+-----------+----------+
| a    | foo1      | foo7     |
| b    | foo2      | foo8     |
| c    | foo3      | foo9     |
+------+-----------+----------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel $q->where() między datami

  2. Znajdź wszystkie te kolumny, które mają tylko wartości null, w tabeli MySQL

  3. Jak wstawić jednocześnie dane dynamicznego wiersza tabeli do bazy danych?

  4. Czy to zapytanie jest bezpieczne przed wstrzyknięciem sql?

  5. Wildfly 8.0.0 problemy mysql ze źródłem danych