sql >> Database teknologi >  >> RDS >> Mysql

Rank funktion i MySQL

En mulighed er at bruge en rangeringsvariabel, såsom følgende:

SELECT    first_name,
          age,
          gender,
          @curRank := @curRank + 1 AS rank
FROM      person p, (SELECT @curRank := 0) r
ORDER BY  age;
 

(SELECT @curRank := 0) del tillader den variable initialisering uden at kræve et separat SET kommando.

Testtilfælde:

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');
 

Resultat:

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

  1. Sådan tælles elementer i kommasepareret liste MySQL

  2. Hvilke metoder kan bruges til at administrere forskellige versioner af allerede eksisterende databaser?

  3. Indeks på tidsstempel:Funktioner i indeksudtryk skal være markeret som IMUTABLE

  4. Få kolonneoplysninger til en tabel eller visning i SQL Server (T-SQL:sp_columns)