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

Usar LIMIT en una subconsulta NOT IN

Estas en el tema de Usar LIMIT en una subconsulta NOT IN en el foro de Mysql en Foros del Web. Si el título no aclara lo que estoy intentando hacer les dejo una consulta (lo más simple posible) de ejemplo: SELECT * FROM tabla1 x ...
  #1 (permalink)  
Antiguo 16/10/2010, 21:26
 
Fecha de Ingreso: noviembre-2004
Ubicación: Buenos Aires
Mensajes: 34
Antigüedad: 20 años
Puntos: 0
Usar LIMIT en una subconsulta NOT IN

Si el título no aclara lo que estoy intentando hacer les dejo una consulta (lo más simple posible) de ejemplo:

SELECT *
FROM tabla1 x
WHERE x.id NOT IN (
SELECT y.id
FROM tabla2 y
ORDER BY y.fecha DESC
LIMIT 5
)

EL problema lo tengo con el NOT IN, si fuera IN alcanzaría con hacer esa misma subconsulta dentro de una junta:

SELECT *
FROM tabla1 x
INNER JOIN (
SELECT y.id
FROM tabla2 y
ORDER BY y.fecha DESC
LIMIT 5
) z ON x.id=z.id

Como dije, esto último para IN anda de maravilla... pero yo necesito la negación y MySQL se queja del LIMIT :(

Última edición por diegoturriaga; 16/10/2010 a las 21:46
  #2 (permalink)  
Antiguo 16/10/2010, 22:03
 
Fecha de Ingreso: noviembre-2004
Ubicación: Buenos Aires
Mensajes: 34
Antigüedad: 20 años
Puntos: 0
Respuesta: Usar LIMIT en una subconsulta NOT IN

Aclaración...

De momento lo he resuelto creando, usando y borrando una tabla temporal (todo dentro de un procedimiento almacenado)

CREATE TEMPORARY TABLE tabla3
SELECT y.id
FROM tabla2 y
ORDER BY y.fecha DESC
LIMIT 5;

SELECT *
FROM tabla1 x
WHERE x.id NOT IN (
SELECT y.id
FROM tabla3 y
)

DROP TABLE tabla3;

Bueno... las 3 consultas las metí dentro de un procedimiento almacenado y de momento todo resuelto; pero, de cualquier manera, si alguien sabe como hacerlo de otra forma soy todo oidos ;)

Etiquetas: limit, subconsulta
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 22:37.