2012-02-20 11 views
5

Necesito una consulta que me dará el resultado que es (a) el precio más alto o (b) el que tiene la marca de tiempo más antigua. En todos los casos, el precio debe marca de tiempo de triunfo (es decir, si un registro tiene una marca de tiempo muy viejo por precio más alto que todos los demás, siempre debe devolver el registro con el precio más alto)PEDIR en múltiples condiciones

Éstos son algunos escenarios:

id | price | date 
1 | 5 | 2012-02-20 08:59:06 
2 | 5 | 2012-02-20 09:59:06 
3 | 7 | 2012-02-20 10:59:06 

debe devolver 3 Identificación porque es más alto precio

id | price | date 
1 | 5 | 2012-02-20 08:59:06 
2 | 5 | 2012-02-20 09:59:06 
3 | 5 | 2012-02-20 10:59:06 

deberían volver ID 1, ya que es la más antigua

En mi consulta actual que estoy haciendo º es:

SELECT * FROM table ORDER BY price, date DESC LIMIT 1 

Lamentablemente, esta consulta no funciona como la describí anteriormente.

Gracias por su ayuda

+4

se han mostrado dos conjuntos de datos idénticos, y solicitar diferentes resultados. ¿Pretendes tener 2 consultas diferentes? si no, ¿cuál es el resultado correcto? – Randy

+0

no veo ninguna diferencia en sus conjuntos de datos, por lo tanto, es bastante difícil de entender lo que está tratando de lograr ... :) – zaphod1984

+0

¿por qué debería el segundo ejemplo devolver ID 1? Usted mencionó que el precio siempre debería superar la marca de tiempo. –

Respuesta

11

Tengo problemas para determinar con precisión lo que está después, sin embargo, parece que usted está buscando la marca de tiempo más antigua por el precio más alto, por lo que el siguiente debería ser suficiente

SELECT * 
FROM table 
ORDER BY 
    price DESC, // Favour the highest price 
    date ASC  // Now get the one with oldest date at this price 
LIMIT 1 
+0

que funciona a pesar de mi explicación poco clara del problema. ¡Gracias! –

0

espero que yo entiendo su pregunta, prueba este

SELECT 
    p.* 
FROM table p 
WHERE price = (SELECT MAX(price) FROM table) 
    OR date = (SELECT MIN(date) FROM table) 
Cuestiones relacionadas