2012-02-20 16 views
5

मुझे एक प्रश्न की आवश्यकता है जो मुझे परिणाम देगा (ए) उच्चतम मूल्य या (बी) सबसे पुराना टाइमस्टैम्प वाला वाला।ऑर्डर कई स्थितियों पर

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 
: सभी मामलों में, कीमत ट्रम्प टाइमस्टैम्प

यहां कुछ परिदृश्य हैं (यानी अगर एक रिकार्ड सभी दूसरों की तुलना में अधिक मूल्य से एक बहुत पुराने टाइमस्टैम्प है, यह हमेशा उच्चतम मूल्य के साथ रिकॉर्ड लौटना चाहिए) चाहिए

लौट चाहिए आईडी 3 क्योंकि यह उच्चतम मूल्य है

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 

लौटना चाहिए आईडी 1 के बाद से यह सबसे पुराना

मेरे वर्तमान क्वेरी मैं वें कर रहा हूँ में है है:

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

दुर्भाग्यवश यह क्वेरी काम नहीं कर रही है कि मैंने इसे ऊपर उल्लिखित कैसे किया है।

आपकी मदद

+4

आप दो समान डेटा सेट से पता चला है की कोशिश, और विभिन्न परिणामों का अनुरोध करें। क्या आप 2 अलग-अलग प्रश्न पूछना चाहते हैं? यदि नहीं, तो सही परिणाम कौन सा है? – Randy

+0

मुझे आपके डेटासेट में कोई फर्क नहीं पड़ता है इसलिए यह समझना मुश्किल है कि आप क्या हासिल करने की कोशिश कर रहे हैं ... :) – zaphod1984

+0

दूसरा उदाहरण आईडी 1 क्यों वापस करना चाहिए? आपने बताया कि कीमत हमेशा टाइमस्टैम्प को हराया जाना चाहिए। –

उत्तर

11

मैं मुसीबत ठीक निर्धारण आप के बाद कर रहे हैं हो रही है के लिए धन्यवाद, लेकिन यह लग रहा है कि आप देख रहे हैं की तरह उच्चतम मूल्य के लिए सबसे पुरानी टाइमस्टैम्प के लिए, और इसलिए निम्नलिखित पर्याप्त होना चाहिए

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

जो समस्या के अस्पष्ट स्पष्टीकरण के बावजूद काम करता है। धन्यवाद! –

0

मैं आशा मैं अपने प्रश्न को समझते हैं, इस

SELECT 
    p.* 
FROM table p 
WHERE price = (SELECT MAX(price) FROM table) 
    OR date = (SELECT MIN(date) FROM table) 
संबंधित मुद्दे