Pilih kedudukan baris dalam MySQL ORDER BY
pertanyaan
Andaikan terdapat jadual MySQL dengan dua lajur id
dan name
, dan matlamatnya adalah untuk mendapatkan satu baris dan kedudukannya dalam jadual diisih mengikut lajur name
dalam tertib menaik. Format hasil yang diingini ialah jadual dengan lajur id
, position
dan name
.
Untuk melakukan ini, anda boleh menggunakan subkueri yang digabungkan dengan pembolehubah pengguna:
<code class="language-sql">SELECT x.id, x.position, x.name FROM (SELECT t.id, t.name, @rownum := @rownum + 1 AS position FROM TABLE t JOIN (SELECT @rownum := 0) r ORDER BY t.name) x WHERE x.name = 'Beta';</code>
Dalam pertanyaan ini, subkueri mengira kedudukan setiap baris berdasarkan susunan nilai name
. Pembolehubah takrif pengguna @rownum
digunakan untuk menetapkan kedudukan unik. Pertanyaan utama kemudian menapis hasil untuk mendapatkan nilai name
"Beta" yang dikehendaki.
Sebagai alternatif, pertanyaan berikut menyediakan kedudukan yang menyelesaikan kes dengan nama yang sama:
<code class="language-sql">SELECT t.id, (SELECT COUNT(*) FROM TABLE x WHERE x.name <= t.name) AS position, t.name FROM TABLE t WHERE t.name = 'Beta';</code>
Pertanyaan ini mengira kedudukan dengan mengira bilangan baris dengan nilai name
kurang daripada atau sama dengan nilai name
baris semasa. Kedua-dua kaedah menyediakan cara untuk menentukan kedudukan baris dalam set hasil diisih.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kedudukan Baris Entri Khusus dalam Pertanyaan MySQL `ORDER BY`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!