Kini kita perlu melaksanakan fungsi sedemikian: mengisih ketinggian kanak-kanak pada umur yang sepadan dalam pangkalan data, dan dapatkan kedudukan ketinggian kanak-kanak dengan ID yang ditentukan. Sebagai contoh, anda ingin menanyakan kedudukan ketinggian kanak-kanak berumur 8 tahun dengan ID 9527 antara ketinggian semua kanak-kanak berumur 8 tahun. Saya tidak tahu banyak tentang pangkalan data, jadi saya biasanya hanya menambah, memadam, mengubah suai dan memadam, jadi saya tidak tahu bagaimana untuk melaksanakan fungsi ini.
Saya menanyakan beberapa maklumat dalam talian, saya mengisihnya dahulu, menjana nombor siri baris, dan kemudian mengembalikan nombor siri yang sepadan dengan ID kanak-kanak. Terdapat pernyataan yang serupa seperti berikut
pilih id,ketinggian,(@rowno:=@rowno+1) sebagai rowno daripada ujian,(pilih (@rowno:=0)) b
susunan mengikut ketinggian desc;
Berdasarkan ini, tanya lokasi:
pilih rowno daripada (pilih id,height,(@rowno:=@rowno+1) sebagai rowno daripada ujian,
(pilih (@rowno:=0)) b susunan mengikut keterangan ketinggian) c dengan id = 9527;
Soalan saya ialah:
1 Apakah itu (@rowno:=@rowno+1), (pilih (@rowno:=0)), b dan C dalam pernyataan. ? Saya mencarinya dan mendapati bahawa ia adalah sesuatu seperti tugasan yang dinamakan tersuai, tetapi saya tidak tahu cara memahaminya dengan tepat b dan c itu kelihatan bermakna?
2. Saya ingin menambah syarat pada penyataan ini, iaitu kedudukan ketinggian kanak-kanak berumur lapan tahun, saya perlu menambah di mana umur bersamaan 8 dengan penyataan pengisihan pertama ditambah? Saya cuba menambahkannya selepas dari ujian dan di beberapa tempat lain, tetapi saya mendapat ralat saya tidak tahu cara menambahkannya.
Saya telah mengalami masalah selama sehari. Saya berharap pangkalan data dapat membantu menjawab dua soalan ini. ! !
1, dapatkan ketinggian 9527 sebagai h
2, pilih kiraan(0) dari tb di mana umur = 8 dan ketinggian >
Tak perlu rumit sangat, ranking ketinggian, kalau rank dari tinggi ke rendah, kira macam ni:
a=medan ketinggian
pilih kiraan(*) daripada kanak-kanak di mana
umur=8 dan
a>= (pilih a daripada kanak-kanak di mana id=9527 );
count(*) ialah ranking
mysql tidak menyokong fungsi pangkat... Dalam pangkalan data yang agak berkuasa seperti oracle, postgres, dll., ia boleh dilaksanakan dengan mudah menggunakan row_number()
Jika lajur pangkalan data ialah id, umur, ketinggian
pilih id, umur , tinggi,
row_number() over (partition by age order by height desc) as rn
from tb