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

MySQL menggabungkan dua tabel dengan nilai maksimum di bidang lain

Anda perlu menggunakan dua sub-kueri seperti ini:

SELECT a.cid, a.name, a.mobile, b.date, b.balance
FROM account a 
JOIN
(
    SELECT b1.* FROM balance b1
    JOIN
    (
      SELECT cid, MAX(Date) As maxDate
      FROM balance
      GROUP BY cid
    ) b2
    ON b1.cid = b2.cid
    AND b1.date = b2.maxDate
) b
ON a.cid = b.cid;

Keluaran:

CID NAME SELULER TANGGAL SALDO
1 ABC 12345 20 September 2013 00:00:00+0000 300
2 XYZ 98475 21 September 2013 00:00:00+0000 600

Lihat SQLFiddle ini

Sunting

Seperti yang dibahas dalam komentar, kueri ini juga dapat ditulis hanya dengan satu subkueri:

SELECT a.cid, a.name, a.mobile, b1.date, b1.balance 
FROM account a 
JOIN balance b1 ON a.cid = b1.cid     
JOIN (
    SELECT cid, MAX(Date) As maxDate 
    FROM balance 
    GROUP BY cid
) b2 
ON b1.cid = b2.cid 
AND b1.date = b2.maxDate

Lihat SQLFiddle yang disesuaikan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tipe data terbaik untuk menyimpan angka panjang yang terbuat dari 0 dan 1

  2. tidak dapat menampilkan simbol merek dagang di mysql ke html

  3. Dapatkan data dari 8 jam terakhir di kolom datetime Eloquent

  4. konstanta yang tidak diinisialisasi Mysql2::Client::SECURE_CONNECTION

  5. duplikat catatan dalam SQL GABUNG