Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

PHPz
Lepaskan: 2023-05-27 11:31:12
ke hadapan
1628 orang telah melayarinya

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

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.
Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

Sampel data:

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

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) :

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

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 sendiri).

Untuk menerangkan secara ringkas, max ialah fungsi agregat kami tidak digunakan dengan kumpulan oleh Malah, hanya mysql yang boleh membenarkan kami melaksanakannya pada masa ini, dan banyak pangkalan data melaporkan ralat secara langsung.

Kemudian pelaksanaan dilaksanakan Sebenarnya, pada masa ini, MySQL adalah setara dengan merawat 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:

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

Adakah itu bermakna max(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:
Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

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:
Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

Gunakan carian terbalik:

PILIH *
DARI vist_record
WHERE user_code='A101'
PESANAN OLEH id DESC
HAD 1;

Hasil pertanyaan:

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

atau dalam susunan terbalik mengikut masa:

PILIH *
DARI vist_record
WHERE user_code='A101'
ORDER BY create_time DESC
LIMIT 1;

Hasil pertanyaan:

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySqlAdakah 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.

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySqlContoh ralat:


PILIH MAX(id) SEBAGAI id ,user_code,cap_color,create_time DARI vist_record GROUP BY user_code

Hasil penapis yang salah:

Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySqlPengekodan yang betul:

PILIH  id ,user_code,cap_color,create_time FROM vist_record  WHERE id in
(
PILIH MAX(id) AS id  FROM vist_record  KUMPULAN OLEH user_code
)

)Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql

Atas ialah kandungan terperinci Bagaimana untuk mencari baris data terkini yang memenuhi syarat dalam MySql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan