Rumah  >  Artikel  >  pangkalan data  >  Penjelasan terperinci contoh MySql: cara mencari baris data terkini yang memenuhi syarat

Penjelasan terperinci contoh MySql: cara mencari baris data terkini yang memenuhi syarat

WBOY
WBOYke hadapan
2022-07-08 14:59:492033semak imbas

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.

Penjelasan terperinci contoh MySql: cara mencari baris data terkini yang memenuhi syarat

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.

Contoh gabungan:

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.

Sampel data:

Apa yang perlu dilakukan ialah:

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.

Data terkini yang memenuhi syarat bagi setiap kategori

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!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam