Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql — gabungkan catatan pertama dan terakhir berdasarkan jenis grup?

Gunakan fungsionalitas "funky" mysql dari GROUP BY tanpa menggabungkan kolom lain, yang hanya mengembalikan pertama barisan kelompok. Masalahnya kemudian menjadi mendapatkan baris ke dalam urutan yang benar sebelum menggunakan fungsi ini, biasanya dengan menggunakan kueri alias.

Pendekatan ini menghindari subkueri apa pun yang berkorelasi (kueri per baris) dan hanya membutuhkan dua lintasan di atas tabel (satu untuk setiap arah pemesanan):

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;

Kode tes:

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');

Keluaran:

+------+-----------+----------+
| 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. Apakah MySQL InnoDB selalu memerlukan indeks untuk setiap batasan kunci asing?

  2. Doktrin Symfony2 terhubung ke database melalui SSL

  3. menghubungkan server MySQL ke NetBeans

  4. Apakah mungkin untuk memuat database di RAM?

  5. PHP Peringatan:mysqli::query():Tidak dapat mengambil mysqli