sql >> Databáze >  >> RDS >> Mysql

Jak mohu s MySQL vygenerovat sloupec obsahující index záznamu v tabulce?

Můžete zkusit následující:

SELECT  l.position, 
        l.username, 
        l.score,
        @curRow := @curRow + 1 AS row_number
FROM    league_girl l
JOIN    (SELECT @curRow := 0) r;

The JOIN (SELECT @curRow := 0) část umožňuje inicializaci proměnné bez nutnosti samostatného SET příkaz.

Testovací případ:

CREATE TABLE league_girl (position int, username varchar(10), score int);
INSERT INTO league_girl VALUES (1, 'a', 10);
INSERT INTO league_girl VALUES (2, 'b', 25);
INSERT INTO league_girl VALUES (3, 'c', 75);
INSERT INTO league_girl VALUES (4, 'd', 25);
INSERT INTO league_girl VALUES (5, 'e', 55);
INSERT INTO league_girl VALUES (6, 'f', 80);
INSERT INTO league_girl VALUES (7, 'g', 15);

Testovací dotaz:

SELECT  l.position, 
        l.username, 
        l.score,
        @curRow := @curRow + 1 AS row_number
FROM    league_girl l
JOIN    (SELECT @curRow := 0) r
WHERE   l.score > 50;

Výsledek:

+----------+----------+-------+------------+
| position | username | score | row_number |
+----------+----------+-------+------------+
|        3 | c        |    75 |          1 |
|        5 | e        |    55 |          2 |
|        6 | f        |    80 |          3 |
+----------+----------+-------+------------+
3 rows in set (0.00 sec)


  1. Bash skript pro vložení hodnot do MySQL

  2. Jak CONCAT() funguje v MariaDB

  3. Proč došlo k selhání databáze MySQL? Získejte přehled s novým rámcem MySQL Freeze Frame

  4. Jak ovládat selhání replikace pro MySQL a MariaDB