Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql Ia terutamanya mengatur isu berkaitan tentang cara mencari baris data terkini yang memenuhi syarat Dalam perniagaan harian, perkara yang sering perlu disemak Apakah yang terkini Sekeping data? Bagi konsep terkini, untuk produk, ia sering dikatakan mengikut urutan kronologi, dan terkini bermaksud yang terkini Mari kita lihat bersama-sama.
Pembelajaran yang disyorkan: tutorial video mysql
Apabila menjalankan perniagaan, anda sering perlu menyemak sekeping data terkini.
Bagi konsep terkini, untuk produk, kami sering bercakap tentang susunan kronologi, dan cara terkini yang paling terkini.
Ini ialah helaian rekod yang merekodkan lawatan orang ramai.
Data dalam jadual data merekodkan dengan tepat warna topi, masa dan kod orang (unik untuk setiap orang) yang dipakai setiap orang semasa melawat.
Keluarkan data terkini yang memenuhi syarat-syarat Lawatan rekod.
Apakah yang akan anda lakukan yang terbaik?
Pertama sekali, keluarkan rekod lawatan terkini kod orang A101.
Mula-mula tunjukkan contoh sql yang salah: menggunakan fungsi max() untuk diberikan.
PILIH MAX(id) SEBAGAI id ,user_code,cap_color,create_time FROM vist_record WHERE user_code='A101' ;
Hasil pertanyaan (hasil yang salah) :
Jelas sekali data itu betul pada pandangan pertama, tetapi ia sebenarnya salah.
Boleh terangkan serba sedikit kenapa salah, memandangkan ada yang berminat dengan ruangan komen (saudara-saudara dialu-alukan untuk menyatakan pendapat).
Untuk menerangkan secara ringkas, max ialah fungsi agregat contoh ralat kami tidak digunakan dengan kumpulan oleh. Malah, hanya mysql boleh membenarkan kami melaksanakannya pada masa ini, dan banyak pangkalan data melaporkan ralat secara langsung.
Kemudian pelaksanaan dilaksanakan Sebenarnya, pada masa ini, mysql menganggap keseluruhan jadual sebagai blok kandungan untuk melakukan pengambilan semula termampat.
Kami menambahkan keadaan dimana user_code='A101', jadi keseluruhan blok kandungan menapis data lain yang bukan user_code='A101'.
Dalam erti kata lain, di bawah pelaksanaan longgar seperti ini, mysql menjamin bahawa max mengembalikan nilai maksimum (lajur yang berkaitan), tetapi ia tidak dijamin untuk medan lajur lain.
Data yang betul ialah:
Adakah ini bermakna maks (id) tidak boleh digunakan?
Penggunaan yang betul (gunakan nilai id maksimum yang memenuhi syarat sebagai syarat):
PILIH
id,kod_pengguna,cap_color,create_time
DARI vist_record
WHERE id IN (SELECT MAX(id) AS id FROM vist_record WHERE user_code='A101' )
Hasil pertanyaan:
Tetapi lihat penggunaan di atas Dengan kaedah subquery ini,
semua orang mesti diam-diam memarahi saya, adakah sangat menyusahkan untuk mendapatkan data terkini?
Adakah yang lebih mudah?
Ya.
Sebagai contoh, kami telah menentukan bahawa id adalah auto-naik dan data dengan id terbesar (data yang memenuhi syarat) adalah yang terkini.
Kemudian kita boleh menggunakan tertib terbalik DESC untuk mendapatkan data terkini:
DESC ialah tertib terbalik/tertib menurun.
PS:
Gunakan carian terbalik:
PILIH *
DARI vist_record
WHERE user_code='A101'
PESANAN OLEH id DESC
HAD 1;
Hasil pertanyaan:
Atau dalam susunan terbalik mengikut masa:
PILIH *
DARI vist_record
WHERE user_code='A101'
ORDER BY create_time DESC
LIMIT 1;
Hasil pertanyaan:
Adakah semudah itu untuk dicapai?
Jadi bagaimana jika yang kita perlukan bukan untuk menentukan A101 tetapi data terkini semua orang yang terlibat?
Iaitu, terdapat beberapa kumpulan konsep.
Kotak oren ialah rekod terkini A101, B202 dan C303, yang ingin kami keluarkan.
Contoh ralat:
PILIH MAX(id) SEBAGAI id ,user_code,cap_color,create_time DARI vist_record GROUP BY user_code
Hasil penapis salah:
Pengekodan yang betul:
PILIH id ,kod_pengguna,warna_cap,masa_buat DARI vist_record WHERE id in
(
PILIH MAX(id) SEBAGAI id DARIPADA vist_record KUMPULAN OLEH user_code
)
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Penjelasan terperinci contoh MySql: cara mencari baris data terkini yang memenuhi syarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!