2009-07-05 14 views
8

मेरे पास एक डेटाबेस है, और मैं एक प्रश्न का उपयोग कर आईडी द्वारा आदेशित पिछले और अगले रिकॉर्ड को जानना चाहता हूं। मैंने एक संघ करने की कोशिश की लेकिन यह काम नहीं करता है। ?। :(MySQL में एक ही क्वेरी का उपयोग कर पिछले और अगले रिकॉर्ड को कैसे खोजें?

SELECT * FROM table WHERE `id` > 1556 LIMIT 1 
UNION 
SELECT * FROM table WHERE `id` <1556 ORDER BY `product_id` LIMIT 1 

कोई भी विचार धन्यवाद एक बहुत

उत्तर

16

आप को बदलने की जरूरत अपने ORDER BY:

SELECT * FROM table WHERE `id` > 1556 ORDER BY `id` ASC LIMIT 1 
UNION 
SELECT * FROM table WHERE `id` < 1556 ORDER BY `id` DESC LIMIT 1 

यह सुनिश्चित करता है कि id क्षेत्र लेने से पहले सही क्रम में है शीर्ष परिणाम

आप MIN और MAX:

012 का भी उपयोग कर सकते हैं
SELECT 
    * 
FROM 
    table 
WHERE 
    id = (SELECT MIN(id) FROM table where id > 1556) 
    OR id = (SELECT MAX(id) FROM table where id < 1556) 

यह ध्यान दिया जाना चाहिए कि उत्पादन कोड में SELECT * की अनुशंसा नहीं की जाती है, इसलिए अपने SELECT कथन में अपने कॉलम का नाम दें।

+1

आपके उत्तर के लिए धन्यवाद, मैंने केवल आलस्य से * किसी भी कॉलम को लिखने के लिए जोड़ा है, मैंने उन्हें वास्तविक कोड में नामित किया है :) –

संबंधित मुद्दे