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

Bagaimana cara menulis kueri jenis n terbesar per grup, tetapi dengan ketentuan tambahan?

Ini memerlukan perhatian di mana menempatkan kondisi (ke where atau ke on ?) agar tidak tertipu :-) Anda perlu menambahkan kondisi t1 ke where klausa dan untuk t2 ke on klausa:

SELECT t1.type, t1.name, t1.value
FROM mytable t1
LEFT JOIN mytable t2 ON t1.type = t2.type AND t1.value > t2.value 
    AND t2.popularity > 3 /* here */
WHERE t2.value IS NULL 
    AND t1.popularity > 3 /* and here */

Belum mengujinya, tetapi seharusnya berfungsi.

Mencoba penjelasan: kondisi di mana klausa memengaruhi elemen mana yang Anda anggap sebagai elemen potensial dengan nilai terendah. Sedangkan kondisi di on klausa memengaruhi tautan:dengan elemen lain apa yang ingin Anda bandingkan? Ini mendefinisikan grup di mana Anda membandingkan. Secara teknis berdampak pada saat t2.* akan menjadi NULL. Apakah Anda memberikan kondisi pada t2.popularity ke where sebagai gantinya, Anda tidak akan menerima NULL (yaitu tidak menemukan elemen dengan nilai terendah) untuk grup di mana elemen terendah memiliki popularitas rendah.




  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 cara menggunakan Koneksi Persisten dari PDO?

  2. Jenis apa yang akan Anda petakan BigDecimal di Java/Hibernate di MySQL?

  3. Hubungkan Metabase dengan MySQL untuk Eksplorasi Data

  4. Bergabunglah untuk menampilkan data spesifik di pembuat kueri laravel

  5. MySQL mengonversi tabel dari Latin1 ke utf8