2012-11-27 16 views
21

के साथ दो एसक्यूएल चयन प्रश्नों (पोस्टग्रेज़ में) को मिलाएं मुझे एक टेबल मिल गई है और मुझे एक क्वेरी चाहिए जो पिछले 10 रिकॉर्ड बनाएगा और रिकॉर्ड आईडी जो एक्स है।LIMIT कथन

मैं क्या करने की कोशिश कर रहा हूँ -

SELECT * FROM catalog_productimage 
ORDER BY date_modified 
LIMIT 10 
UNION 
SELECT * FROM catalog_productimage 
WHERE id=5; 

लेकिन यह नहीं लगता है जैसे मैं UNION से पहले वहाँ में LIMIT डाल सकते हैं। मैं एक और स्तंभ जोड़ने और छँटाई के लिए उपयोग करने की कोशिश की है -

SELECT id, date_modified, IF(false, 1, 0) as priority FROM catalog_productimage 
UNION 
SELECT, id, date_modified, IF(true, 1, 0) as priority FROM catalog_productimage 
WHERE id=5 
ORDER BY priority, date_modified 
LIMIT 10; 

लेकिन मैं बहुत प्रगति नहीं बना रहा हूं ..

उत्तर

36

के साथ वापस जवाब देगा बस की जाँच की है कि इस काम करेगा:

(SELECT * FROM catalog_productimage 
ORDER BY date_modified 
LIMIT 10) 
UNION 
SELECT * FROM catalog_productimage 
WHERE id=5; 
+0

मैं तो लगभग वहाँ था! धन्यवाद! –

1

यह आपको 20 वीं करने के लिए 10 वीं से रिकॉर्ड दे देंगे और आप शुरु मिलना चाहिए SQLfiddle

SELECT * 
    FROM (SELECT ROW_NUMBER() OVER (ORDER BY cat_id) cat_row_no, a.* FROM catalog_productimage a where x=5) 
WHERE cat_row_no > 10 and cat_row_no <20