Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿ Como selecciono el ultimo registro añadido a mi bd?

Estas en el tema de ¿ Como selecciono el ultimo registro añadido a mi bd? en el foro de Mysql en Foros del Web. Estoy intentando decirle que me seleccione el ultimo registro de mi bd y no se porque me esta dando errores por todas partes de todas ...
  #1 (permalink)  
Antiguo 17/02/2011, 06:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 228
Antigüedad: 15 años, 10 meses
Puntos: 2
¿ Como selecciono el ultimo registro añadido a mi bd?

Estoy intentando decirle que me seleccione el ultimo registro de mi bd y no se porque me esta dando errores por todas partes de todas las formas que conozco.

hasta ahor estoy intentando algo asi.

Código MySQL:
Ver original
  1. SELECT id_usuarios, usuario FROM usuarios where id_usuarios = select max(id_usuarios) from usuario

Tambien he probado con:

Código MySQL:
Ver original
  1. SELECT max(id_usuarios), usuario FROM usuarios

Pero no se que pasa que me sale un usuario que no se corresponde con el ultimo añadido.
  #2 (permalink)  
Antiguo 17/02/2011, 06:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 228
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: ¿ Como selecciono el ultimo registro añadido a mi bd?

Bueno, jeje, justo despues de darle a enviar he probado con

Código PHP:
SELECT usuario,id_usuarios FROM usuarios order by id_usuarios desc limit 1 
Consiguiendo lo que queria el ultimo registro añadido demi bd con su nombre de usuario.
  #3 (permalink)  
Antiguo 17/02/2011, 07:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿ Como selecciono el ultimo registro añadido a mi bd?

Te daba error porque una función agrupada (SUM(), AVG, MAX(), MIN(), etc.), no se puede usar en el WHERE. En ningún DBMS.
Puedes usar MAX() para tu caso sólo si lo usas en un HAVING:
Código MySQL:
Ver original
  1.     id_usuarios,
  2.     usuario
  3.     usuarios
  4. HAVING id_usuarios = MAX(id_usuarios);

Además, no puedes usar una comparación con el resultado de un SELECT de esa forma. Para ello deberías haber escrito una subconsulta así:
Código MySQL:
Ver original
  1.     id_usuarios,
  2.     usuario
  3.     usuarios
  4. WHERE id_usuarios = (SELECT MAX(id_usuarios) FROM usuarios);
Pero tampoco tiene mucho sentido, porque estarías leyendo dos veces la misma tabla, lo que no resulta optimo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 17/02/2011, 09:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 228
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: ¿ Como selecciono el ultimo registro añadido a mi bd?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Te daba error porque una función agrupada (SUM(), AVG, MAX(), MIN(), etc.), no se puede usar en el WHERE. En ningún DBMS.
Puedes usar MAX() para tu caso sólo si lo usas en un HAVING:
Código MySQL:
Ver original
  1.     id_usuarios,
  2.     usuario
  3.     usuarios
  4. HAVING id_usuarios = MAX(id_usuarios);

Además, no puedes usar una comparación con el resultado de un SELECT de esa forma. Para ello deberías haber escrito una subconsulta así:
Código MySQL:
Ver original
  1.     id_usuarios,
  2.     usuario
  3.     usuarios
  4. WHERE id_usuarios = (SELECT MAX(id_usuarios) FROM usuarios);
Pero tampoco tiene mucho sentido, porque estarías leyendo dos veces la misma tabla, lo que no resulta optimo.

Vaya, gracias por la aclaracion. ¿ Tanto se nota que me salte la leccion de los having y los group by?, aparte de consultas anidadas donde terminabas poniendo 2 tablas iguales con mismo nombre y diferente alias y los mismos registros haciendo una select dentro de otra. Vamos un lio que ni se parecia a realizar 1 select dentro de otra con un id relacionado en tablas diferentes.

Última edición por arts; 17/02/2011 a las 09:39

Etiquetas: bd, registro, ultimo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:59.