Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Meniru Fungsi ANSI SQL RANK dalam MySQL?

Bagaimana untuk Meniru Fungsi ANSI SQL RANK dalam MySQL?

Barbara Streisand
Lepaskan: 2025-01-24 05:02:08
asal
456 orang telah melayarinya

How to Replicate the ANSI SQL RANK Function in MySQL?

Simulasikan fungsi ANSI SQL RANK dalam MySQL

Dalam SQL, fungsi RANK digunakan untuk mengira kedudukan nilai yang diberikan dalam senarai tersusun. Untuk menentukan kedudukan berdasarkan jantina dan umur pelanggan, anda boleh menggunakan pertanyaan ANSI SQL berikut:

<code class="language-sql">SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender], FirstName, Age, Gender FROM Person</code>
Salin selepas log masuk

Walau bagaimanapun, MySQL tidak mempunyai persamaan langsung dengan fungsi RANK yang disediakan dalam pertanyaan di atas. Berikut ialah cara lain untuk mencapai kedudukan yang diingini dalam MySQL:

Salah satu cara ialah menggunakan pembolehubah kedudukan, seperti ini:

<code class="language-sql">SELECT    first_name,
          age,
          gender,
          @curRank := @curRank + 1 AS rank
FROM      person p, (SELECT @curRank := 0) r
ORDER BY  age;</code>
Salin selepas log masuk
Tujuan bahagian

(SELECT @curRank := 0) adalah untuk memulakan pembolehubah tanpa memerlukan arahan SET yang berasingan.

Pertimbangkan kes ujian di mana anda membuat jadual orang dan memasukkan nilai sampel:

<code class="language-sql">CREATE TABLE person (id int, first_name varchar(20), age int, gender char(1));

INSERT INTO person VALUES (1, 'Bob', 25, 'M');
INSERT INTO person VALUES (2, 'Jane', 20, 'F');
INSERT INTO person VALUES (3, 'Jack', 30, 'M');
INSERT INTO person VALUES (4, 'Bill', 32, 'M');
INSERT INTO person VALUES (5, 'Nick', 22, 'M');
INSERT INTO person VALUES (6, 'Kathy', 18, 'F');
INSERT INTO person VALUES (7, 'Steve', 36, 'M');
INSERT INTO person VALUES (8, 'Anne', 25, 'F');</code>
Salin selepas log masuk

Selepas melaksanakan pertanyaan MySQL, anda akan mendapat hasil berikut, yang meletakkan kedudukan pelanggan berdasarkan umur dalam kumpulan jantina masing-masing:

<code>+------------+------+--------+------+
| first_name | age  | gender | rank |
+------------+------+--------+------+
| Kathy      |   18 | F      |    1 |
| Jane       |   20 | F      |    2 |
| Nick       |   22 | M      |    3 |
| Bob        |   25 | M      |    4 |
| Anne       |   25 | F      |    5 |
| Jack       |   30 | M      |    6 |
| Bill       |   32 | M      |    7 |
| Steve      |   36 | M      |    8 |
+------------+------+--------+------+
8 rows in set (0.02 sec)</code>
Salin selepas log masuk

Dengan kaedah ini, anda boleh meletakkan kedudukan pelanggan dengan berkesan dalam MySQL berdasarkan kriteria yang ditetapkan walaupun MySQL tidak mempunyai fungsi RANK terbina dalam.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi ANSI SQL RANK dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan