sentencia - seleccionar varios campos de una tabla en mysql
Seleccione una fila especĂfica de la tabla mysql (6)
Idealmente necesito una consulta que sea equivalente a
select * from customer where row_number() = 3
pero eso es ilegal
No puedo usar un campo de incremento automático.
row_number () es la fila que debe seleccionarse.
¿Cómo hago para esto?
EDITAR: Bueno, uso iSql * plus para practicar, y el uso de limit y auto_increment es ilegal por alguna razón. Terminé creando una secuencia y un disparador y solo aumenté el ID en 1 cada vez que había una entrada.
Las tablas de SQL no están ordenadas de forma predeterminada, y solicitar la fila n-th de un conjunto de filas no ordenadas no tiene ningún significado, ya que podría devolver una fila diferente cada vez, a menos que especifique un ORDER BY:
select * from customer order by id where row_number() = 3
(A veces, las tablas de MySQL se muestran con un orden interno, pero no puede confiar en este comportamiento). Luego puede usar el LIMIT offset, row_count
, con un desplazamiento basado en 0 para que la fila número 3 se convierta en desplazamiento 2:
select * from customer order by id
limit 2, 1
o puede usar LIMIT row_count OFFSET offset
:
select * from customer order by id
limit 1 offset 2
No puedes seleccionar una fila como esa. Tienes que especificar un campo cuyos valores serán 3.
Aquí hay una consulta que funcionará, si el campo con el que se está comparando es id
select * from customer where `id` = 3
Puede agregar un campo de ID generado automáticamente en la tabla y seleccionar por este ID
SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = 3;
Puede usar LIMIT 2,1
lugar de WHERE row_number() = 3
.
Como lo explica la documentation , el primer argumento especifica el desplazamiento de la primera fila a devolver, y el segundo especifica el número máximo de filas a devolver .
Tenga en cuenta que es un índice basado en 0. Por lo tanto, si desea el número de línea n , el primer argumento debe ser n-1 . El segundo argumento siempre será 1 , porque solo quieres una fila. Por ejemplo, si desea el número de línea 56 de un customer
tabla:
SELECT * FROM customer LIMIT 55,1
Tendrá que crear su tabla con un campo de ID único que idealmente tendrá el atributo AUTO_INCREMENT. ejemplo:
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (P_Id)
)
Luego puedes acceder al 3er registro en esta tabla con:
SELECT * FROM Persons WHERE P_Id = 3
SET @customerID=0;
SELECT @customerID:=@customerID+1 AS customerID
FROM CUSTOMER ;
puede obtener el conjunto de datos de SQL de esta manera y rellenarlo en una estructura de datos java (como una lista) y luego realizar la clasificación necesaria allí. (tal vez con la ayuda de una interfaz comparable)