La función ROW_NUMBER() en MySQL se utiliza para devolver el numero secuencial para cada fila dentro de su partición. Es una especie de función de ventana. El número de fila comienza desde 1 hasta el número de filas presentes en la partición.
Cabe señalar que MySQL no admite la función ROW_NUMBER() antes de la versión 8.0, pero proporciona una variable de sesión que nos permite emular esta función.
Sintaxis
La siguiente es la sintaxis básica para usar ROW_NUMBER() en mysql :
javafx en eclipse
ROW_NUMBER() OVER ( )
Demostrémoslo con un ejemplo. .
Primero, vamos a crear una tabla llamada ' Persona ' usando la siguiente declaración:
CREATE TABLE Person ( Name varchar(45) NOT NULL, Product varchar(45) DEFAULT NULL, Country varchar(25) DEFAULT NULL, Year int NOT NULL );
A continuación, es necesario agregar valores a esta tabla. Ejecute la siguiente declaración:
cadena java a int
INSERT INTO Person(Name, Product, Country, Year) VALUES ('Stephen', 'Computer', 'USA', 2015), ('Joseph', 'Laptop', 'India', 2016), ('John', 'TV', 'USA', 2016), ('Donald', 'Laptop', 'England', 2015), ('Joseph', 'Mobile', 'India', 2015), ('Peter', 'Mouse', 'England', 2016);
A continuación, ejecute la instrucción SELECT para mostrar los registros:
mysql> SELECT * FROM Person;
Obtendremos el resultado, como se muestra a continuación:
Ahora, podemos usar la función ROW_NUMBER() para asignar un número de secuencia para cada registro usando la siguiente declaración:
cadena encontrar c ++
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
Dará el siguiente resultado:
Nuevamente, podemos usar la función ROW_NUMBER() para asignar un número de secuencia para cada registro dentro de una partición usando la siguiente declaración:
SELECT *, ROW_NUMBER() OVER(PARTITION BY Year) AS row_num FROM Person;
Dará el resultado como se muestra a continuación, donde se encontraron dos particiones según el año (2015 y 2016).
dígito romano del 1 al 100
MySQL ROW_NUMBER() usando la variable de sesión
Podemos emular la función ROW_NUMBER() para agregar un número de fila en orden creciente usando la variable de sesión.
Ejecute la siguiente instrucción que suma el número de fila para cada fila, que comienza desde 1:
SET @row_number = 0; SELECT Name, Product, Year, Country, (@row_number:=@row_number + 1) AS row_num FROM Person ORDER BY Country;
En esta declaración, primero especificamos la variable de sesión. @numero de fila indicado por @prfix y establecemos su valor 0. Luego, hemos seleccionado los datos de la tabla Persona y aumentamos el valor de la variable @row_number en uno para cada fila.
Después de la ejecución exitosa de las consultas, obtendremos el resultado siguiente:
Nuevamente, usaremos una variable de sesión como tabla y la uniremos con la tabla fuente usando la siguiente declaración:
SELECT (@row_number:=@row_number + 1) AS row_num, Name, Country, Year FROM Person, (SELECT @row_number:=0) AS temp ORDER BY Year;
Obtendremos el resultado de la siguiente manera: