Seleccione la primera fila de la tabla MySQL
- Seleccione la primera fila de la tabla MySQL
-
Use la cláusula
LIMIT
para recuperar la primera fila de la tabla MySQL donde una columna tiene varias instancias -
Utilice
IN()
,MIN()
yGROUP BY
para obtener la primera fila de cada grupo de la tabla MySQL -
Use
LIMIT
yORDER BY
para seleccionar la primera fila de toda la tabla de MySQL
Hoy exploraremos tres escenarios y sus soluciones donde queremos seleccionar la primera fila de la tabla MySQL.
En el primer escenario, aprenderemos a obtener la primera fila de la tabla MySQL donde una columna en particular tiene múltiples instancias. Por ejemplo, seleccione la primera fila de la tabla gerente
donde first_name
es Mehvish
.
En el segundo escenario, seleccionaremos la primera fila de cada grupo de una tabla. Aquí, también veremos cómo recuperar datos con respecto a los grupos. En el tercer escenario, veremos cómo obtener la primera fila de toda la tabla de MySQL.
Seleccione la primera fila de la tabla MySQL
Antes de profundizar en los ejemplos de código, creemos una tabla manager_id
con manager_id
, first_name
y last_name
como campos donde manager_id
es una clave principal.
Las consultas para crear y completar esta tabla se proporcionan a continuación. También puede utilizar estos.
Código de ejemplo:
CREATE TABLE manager (
manager_id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(150) NOT NULL,
last_name VARCHAR(150) NOT NULL,
PRIMARY KEY(manager_id)
);
INSERT INTO manager (first_name, last_name)
VALUES
('Mehvish', 'Ashiq'),
('Saira', 'Mushtaq'),
('Thomas', 'Christopher'),
('Thomas', 'Gabrial'),
('Tahir', 'Raza'),
('Saira', 'Johny'),
('Saira', 'Daniel');
SELECT * FROM manager;
Producción :
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 1 | Mehvish | Ashiq |
| 2 | Saira | Mushtaq |
| 3 | Thomas | Christopher |
| 4 | Thomas | Gabrial |
| 5 | Tahir | Raza |
| 6 | Saira | Johny |
| 7 | Saira | Daniel |
+------------+------------+-------------+
7 rows in set (0.00 sec)
Use la cláusula LIMIT
para recuperar la primera fila de la tabla MySQL donde una columna tiene varias instancias
Tenemos una instancia de Mehvish
, una instancia de Tahir
, dos instancias de Thomas
y tres instancias de Saira
en la columna first_name
de la tabla manager
. Puede usar la instrucción SELECT
para ver los datos de la tabla actual.
Ejecute la siguiente instrucción para tomar la primera fila de la tabla gerente
donde first_name
es Saira
.
Consulta:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 1;
Producción :
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 2 | Saira | Mushtaq |
+------------+------------+-----------+
1 row in set (0.00 sec)
Supongamos que queremos tomar el tercer registro donde el first_name
es Saira
. Usamos la cláusula LIMIT
con dos argumentos (explicado más adelante en este tutorial).
Consulta:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2,1;
Producción :
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 7 | Saira | Daniel |
+------------+------------+-----------+
1 row in set (0.00 sec)
Supongamos que queremos obtener los primeros dos registros donde el first_name
es Saira
. Podemos hacer eso de la siguiente manera.
Consulta:
SELECT * FROM manager WHERE first_name = 'Saira' LIMIT 2;
Producción :
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 2 | Saira | Mushtaq |
| 6 | Saira | Johny |
+------------+------------+-----------+
2 rows in set (0.00 sec)
También podemos obtener los dos últimos registros donde el nombre first_name
es Saira
. Usamos la cláusula ORDER BY
con la cláusula LIMIT
.
Consulta:
SELECT * FROM manager WHERE first_name = 'Saira' ORDER BY manager_id DESC LIMIT 2;
Producción :
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 7 | Saira | Daniel |
| 6 | Saira | Johny |
+------------+------------+-----------+
2 rows in set (0.00 sec)
Aquí, es crucial comprender el papel de las cláusulas LIMIT
y ORDER BY
. La cláusula LIMIT
se usa con una declaración SELECT
para obtener un cierto número de registros de una tabla.
La cláusula LIMIT
toma uno o dos argumentos que deben ser un número entero positivo o cero. La siguiente es la sintaxis de la cláusula LIMIT
con uno y dos argumentos.
Sintaxis:
# Syntax with one argument
SELECT
your_select_list
FROM
you_table_name
WHERE
your_condition
LIMIT row_count;
# Syntax with two arguments
SELECT
your_select_list
FROM
your_table_name
WHERE
your_condition
LIMIT [offset,] row_count;
El row_count
muestra el número máximo de registros a devolver, mientras que el offset
se utiliza cuando queremos recuperar un rango específico de registros, por ejemplo, desde el offset
2 hasta el row_count
4. Recuerde que el offset
de la primera fila no es 1 sino 0.
Consulte la siguiente ilustración.
Recuerde, el LIMIT row_count
y el LIMIT 0, row_count
son equivalentes entre sí. Según los requisitos del proyecto, la cláusula ORDER BY
ordena los datos de la tabla en orden ascendente o descendente.
Utilice IN()
, MIN()
y GROUP BY
para obtener la primera fila de cada grupo de la tabla MySQL
Este segundo escenario seleccionará y tomará la primera fila de cada grupo de la tabla usando las funciones IN()
y MIN()
y la cláusula GROUP BY
.
Código de ejemplo:
SELECT * FROM manager
WHERE
manager_id IN (
SELECT min(manager_id)
FROM manager
GROUP BY first_name
);
Producción :
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 1 | Mehvish | Ashiq |
| 2 | Saira | Mushtaq |
| 3 | Thomas | Christopher |
| 5 | Tahir | Raza |
+------------+------------+-------------+
4 rows in set (0.08 sec)
Este ejemplo utiliza las diferentes funciones y cláusulas para obtener los resultados deseados.
IN()
- Esta función nos permite especificar múltiples valores en la cláusulaWHERE
. Devuelve1
si una expresión es igual a cualquiera de los valores de la listaIN()
.GROUP BY
- Agrupa los registros que contienen los mismos valores, principalmente utilizados con funciones agregadas, por ejemplo,MIN()
,MAX()
,COUNT()
, etc.MIN()
- Devuelve el valor más bajo de un atributo (columna) en la consulta.- Subconsulta: está anidada dentro de otra consulta, por ejemplo,
SELECCIONAR
,ACTUALIZAR
,ELIMINAR
, etc. También podemos anidar una subconsulta en otra subconsulta (necesitamos entender el orden de ejecución de varios cláusulas).
Use LIMIT
y ORDER BY
para seleccionar la primera fila de toda la tabla de MySQL
Seleccione la primera fila de toda la tabla independientemente del orden y la condición utilizando la cláusula LIMIT
.
Consulta:
SELECT * from manager LIMIT 1;
Producción :
+------------+------------+-----------+
| manager_id | first_name | last_name |
+------------+------------+-----------+
| 1 | Mehvish | Ashiq |
+------------+------------+-----------+
1 row in set (0.00 sec)
Utilice ORDENAR POR
con LÍMITE
para obtener la primera fila de los datos ordenados (en orden descendente).
Consulta:
SELECT * from manager ORDER BY first_name DESC LIMIT 1;
Producción :
+------------+------------+-------------+
| manager_id | first_name | last_name |
+------------+------------+-------------+
| 3 | Thomas | Christopher |
+------------+------------+-------------+
1 row in set (0.00 sec)