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

Ambil catatan non-null terakhir dari setiap kolom untuk setiap record_id di MySQL

Yang ini mungkin menyelesaikan masalah Anda:

select 
  record_id,
  substring_index(group_concat(Data1 order by Time desc), ',', 1) Data1,
  substring_index(group_concat(Data2 order by Time desc), ',', 1) Data2,
  substring_index(group_concat(Time  order by Time desc), ',', 1) Time
from records
group by record_id
;

Ini mungkin tidak secepat jawaban lain, tetapi versi lain ... cobalah. Jika Anda memiliki Data3 kolom di tabel Anda, Anda dapat menyalin/menempelkan Data1 kolom dan cukup ubah semua referensi kolom ini ke yang baru.

Hanya untuk menjelaskan cara kerjanya:group_concat fungsi menggabungkan semua nilai non-null dari kolom dengan pemisah (, secara default). Anda dapat memesan kolom sebelum penggabungan. Ini bekerja seperti fungsi jendela di Oracle, Postgre, dan lainnya... substring_index baru saja mendapatkan nilai gabungan pertama, karena daftarnya dalam urutan waktu menurun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa melewatkan array parameter PDO namun tetap menentukan tipenya?

  2. Cara memperbarui banyak kolom di mysql menggunakan php

  3. Banyak ke Banyak di dalam Meja Banyak ke Banyak

  4. Tampilan MySQL:Merujuk satu bidang terhitung (berdasarkan nama) di bidang terhitung lainnya

  5. Bagaimana cara mengatur zona waktu xampp mysql dan apache?