Tengo la siguiente tabla:Seleccionar los 3 registros más recientes en los que los valores de una columna son distintos
id time text otheridentifier
-------------------------------------------
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2
Lo que quiero hacer es seleccionar los 3 registros más recientes (por desc tiempo), cuya otheridentifier
s son distintos. Así pues, en este caso, el resultado sería id
's: 5, 4 y 2.
id
= 3 se omitiría porque hay un registro más reciente con el mismo campo otheridentifier
.
Esto es lo que he intentado hacer:
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3
Sin embargo, me acaban de conseguir filas de id
= 5, 3 , y en lugar de 5, 4, 2 como se esperaba.
¿Puede alguien decirme por qué esta consulta no me devolvió lo que esperaba? Traté de cambiar el ORDER BY a ASC pero esto simplemente reorganiza las filas devueltas a 1, 3, 5.
que recordaba el tiempo que pasé horas para fijar sQL como esto y resulta que MySQL 4.0 no admite consultas anidadas; p – Unreality
@Unreality: Fortu nately la mayoría de las soluciones que implican subconsultas se pueden expresar como join si es necesario. :) – Rytmis
Sí, pero los que tienen ORDER/LIMIT no se expresan fácilmente por JOIN ... –