2012-11-27 22 views
21

Ho una tabella e voglio una query che restituisca gli ultimi 10 record creati più il record di chi è id x.Combina due query sql select (in postgres) con istruzione LIMIT

che sto cercando di fare -

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

Ma non sembra che posso mettere in LIMIT lì prima UNION. Ho provato ad aggiungere un'altra colonna e di utilizzarlo per l'ordinamento -

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; 

ma non sto facendo molti progressi ..

risposta

36

appena controllato che questo funzionerà:

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

ero così quasi! Grazie! –

1

Questo vi darà record da 10 al 20 e dovrebbe farti started.i risponderà indietro con 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