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

mysql cara mendapatkan nilai tertinggi ke-2 dengan grup oleh dan di kiri bergabung

Pertama, Anda tidak perlu bergabung dengan yang ketiga sama sekali. Anda dapat melakukan perhitungan Anda dalam satu kali bergabung:

from (select id
      from owner
      where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
     ) as a left join
     (select owner_id, max(nb) as maxbid, max(mb) as maxautobi
      from auction
      group by owner_id
     ) b
     on a.id=b.owner_id;

Mendapatkan nilai terbesar kedua untuk mb kemudian menggunakan trik, yang melibatkan substring_index() dan group_concat() :

   from (select id
          from owner
          where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
         ) as a left join
         (select owner_id, max(nb) as maxbid, max(mb) as maxautobi,
                 substring_index(substring_index(group_concat(mb order by mb desc), ',', 2), ',', -1
                                ) as second_mb
          from auction
          group by owner_id
         ) b
         on a.id=b.owner_id;

Idenya adalah untuk menggabungkan nilai-nilai bersama-sama, memesan dengan mb . Kemudian ambil elemen kedua dari daftar. Satu-satunya kelemahan adalah bahwa nilainya diubah menjadi string karakter, meskipun dimulai sebagai angka.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP 5:DAL apa yang Anda gunakan?

  2. cara mencocokkan dua baris tabel mysql yang sama di php

  3. Bagaimana cara menulis pernyataan IF ELSE dalam kueri MySQL?

  4. JIKA... ELSE dalam klausa WHERE MySQL

  5. Bagaimana cara mendeteksi jika ada tabel? MySql