2012-11-27 7 views
21

Ich habe eine Tabelle und ich möchte eine Abfrage, die die letzten 10 Datensätze erstellt und den Datensatz, der ID x ist. zu tunKombinieren Sie zwei SQL SELECT-Abfragen (in Postgres) mit LIMIT-Anweisung

Ich versuche -

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

Aber es sieht nicht wie ich LIMIT dort vor UNION setzen können. Ich habe versucht, eine weitere Spalte hinzufügen und es zum Sortieren mit -

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; 

aber ich mache nicht viel Fortschritt ..

Antwort

36

Nur, dass dies funktionieren wird:

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

ich so fast da war! Vielen Dank! –

1

Dies gibt Ihnen Aufzeichnungen vom 10. bis 20. und sollte erhalten Sie started.i antworten

geprüft mit SQLfiddle zurück
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