Saya mempunyai beberapa data produk yang dikikis dalam pangkalan data dan saya mahu menggunakannya di tapak web saya. Saya ingin menulis pertanyaan yang mengembalikan semua item dengan tajuk "%EXAMPLE%" tetapi hanya produk unik.
Masalahnya ialah saya mempunyai beberapa baris untuk 1 item, dan saya hanya mahu mengembalikan 1 baris setiap produk (saya mengikis setiap hari, jadi saya mendapat baris tambahan setiap item setiap hari). Satu-satunya perbezaan antara baris ialah mereka mempunyai tarikh dan harga yang lain, kerana itulah sejarah harga yang saya cari.
Contoh: Kami ada 3 item: coklat merah jambu, epal merah jambu dan pear merah jambu. Terdapat 3 baris untuk setiap item kerana saya menconteng 3 kali. Contohnya (untuk tujuan contoh ini, saya tidak menambah semua lajur lain):
ID Produk | Tajuk | Harga | Tersedia |
---|---|---|---|
ABC123DEF | Epal Merah Jambu | 0.47 | 1 |
ABC123DEF | Epal Merah Jambu | 0.42 | 1 |
ABC123DEF | Epal Merah Jambu | 0.41 | 1 |
ABC333FHG | Pink Merah Jambu | 0.41 | 1 |
ABC333FHG | Pink Merah Jambu | 0.41 | 1 |
ABC333FHG | Pink Merah Jambu | 0.41 | 1 |
FH5845FJG | Coklat Merah Jambu | 0.41 | 1 |
FH5845FJG | Coklat Merah Jambu | 0.41 | 1 |
FH5845FJG | Coklat Merah Jambu | 0.41 | 1 |
Hasil yang saya nak dapat ialah:
ID Produk | Tajuk | Harga | Tersedia |
---|---|---|---|
ABC123DEF | Epal Merah Jambu | 0.47 | 1 |
ABC333FHG | Pink Merah Jambu | 0.41 | 1 |
FH5845FJG | Coklat Merah Jambu | 0.41 | 1 |
Nampaknya saya perlu mencari tajuk dan kemudian menapis produkId pendua untuk mendapatkan hasil yang betul. Tetapi saya tidak tahu bagaimana untuk melakukannya.
Ada idea?
Contoh:
Pertanyaan menyimpan baris harga tertinggi untuk setiap ID produk dan memadamkan baris lain untuk produk tersebut.
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=40df8e8e4b3eb206e0f73b7ce3a70a a5一个>
Nota - Setiap baris lengkap yang mesti disimpan adalah unik (baris yang mesti dipadamkan mungkin mempunyai pendua lengkap).
Pertanyaan ini tidak memerlukan baris menjadi unik, yang mana hanya satu salinan baris dikembalikan. Jika anda memerlukan semua salinan, gunakan RANK() atau DENSE_RANK() dan bukannya ROW_NUMBER().
Penyelesaian untuk versi MySQL 5.x.