Anda memiliki banyak solusi dan salah satunya adalah menggunakan left join
dan Anda dapat memeriksanya
select t1.* from test t1
left join test t2
on t1.type = t2.type and t1.price > t2.price
group by t1.variety
having count(*) <=1
order by t1.type,t1.price
Logikanya adalah melakukan join kiri dengan tabel yang sama di mana jenisnya sama dan harganya lebih rendah dari yang lain dan akhirnya melakukan group by
kurikulumnya dan kemudian gunakan count() dengan harus menunjukkan jumlah catatan yang Anda inginkan per grup. Perhatikan bahwa di mysql Anda memiliki kebebasan untuk memiliki grup demi klausa seperti pada kueri di atas dengan cara yang sewenang-wenang yang mungkin gagal di RDBMS lain.
Sekarang karena Anda memiliki beberapa kebingungan tentang alias
, pada contoh di atas nama tabelnya adalah test
dan di dalam kueri nama semu diberikan sebagai t1
. Juga ketika Anda melakukan self join, penting bagi Anda untuk memberikan nama alias unik untuk tabel yang sama. Pada contoh di atas tabel yang sama digabungkan dengan dirinya sendiri sehingga kita perlu memastikan bahwa kita memberikan beberapa nama alias untuk tabel.