two - Función MAX en donde cláusula mysql
select max mysql group by (8)
¿Cómo puedo usar la función max () en la cláusula where de una consulta mysql? Estoy intentando:
select firstName,Lastname,MAX(id) as max where id=max;
esto me está dando un error
Unknown column ''max'' in ''where clause''
¿Alguna ayuda? Gracias por adelantado.
¿Quieres el nombre y apellido de la fila con el ID más grande?
Si es así (y le faltaba una cláusula FROM):
SELECT firstname, lastname, id
FROM foo
ORDER BY id DESC
LIMIT 1;
Algunas versiones de Mysql no permiten el "límite" dentro de una selección secundaria. Mi respuesta para usted (y para mí en el futuro) sería usar grupos
select firstName,Lastname,id
where {whatever}
group by id
having max(id)
Esto le permite devolver lo que quiera en el área de selección, sin tener un campo agregado.
Está utilizando la palabra ''max'' como un alias para su columna. Intentar:
MAX(id) as mymax ... WHERE ID - mymax
Esta consulta debe devolverle los datos que desea. Reemplace foo con el nombre de la tabla que está utilizando.
Consulta SQL:
select firstName,Lastname, id
from foo
having max(id) = id
La sintaxis que has usado es incorrecta. La consulta debe ser algo como:
SELECT column_name(s) FROM tablename WHERE id = (SELECT MAX(id) FROM tablename)
No puede hacer referencia al resultado de una función agregada (por ejemplo, MAX ()) en una cláusula WHERE de la misma consulta.
El patrón normativo para resolver este tipo de problema es usar una vista en línea, algo como esto:
SELECT t.firstName
, t.Lastname
, t.id
FROM mytable t
JOIN ( SELECT MAX(mx.id) AS max_id
FROM mytable mx
) m
ON m.max_id = t.id
Esta es solo una forma de obtener el resultado especificado. Existen varios otros enfoques para obtener el mismo resultado, y algunos de ellos pueden ser mucho menos eficientes que otros. Otras respuestas demuestran este enfoque:
WHERE t.id = (SELECT MAX(id) FROM ... )
A veces, el enfoque más simple es utilizar un ORDEN POR UN LÍMITE. (Tenga en cuenta que esta sintaxis es específica de MySQL)
SELECT t.firstName
, t.Lastname
, t.id
FROM mytable t
ORDER BY t.id DESC
LIMIT 1
Tenga en cuenta que esto devolverá sólo una fila; por lo tanto, si hay más de una fila con el mismo valor de ID, esto no los devolverá a todos. (La primera consulta devolverá TODAS las filas que tienen el mismo valor de id.)
Este enfoque puede extenderse para obtener más de una fila, puede obtener las cinco filas que tienen los valores de identificación más altos cambiándolo a LIMIT 5
.
Tenga en cuenta que el rendimiento de este enfoque depende particularmente de la disponibilidad de un índice adecuado (es decir, con id
como la CLAVE PRINCIPAL o como la columna principal en otro índice). Un índice adecuado mejorará el rendimiento de las consultas utilizando todos estos enfoques.
Utilice una subselección:
SELECT row FROM table WHERE id=(
SELECT max(id) FROM table
)
Nota: el ID debe ser único, de lo contrario se devuelven varias filas
SELECT firstName, Lastname, MAX(id) as max WHERE YOUR_CONDITIONS_HERE HAVING id=max(id)