2012-11-27 23 views
21

Tôi đã có một bảng và tôi muốn truy vấn trả về 10 bản ghi cuối cùng được tạo cộng với bản ghi là id là x.Kết hợp hai truy vấn chọn sql (trong postgres) với LIMIT statement

Tôi đang cố gắng để làm -

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

Nhưng nó không giống như tôi có thể đặt LIMIT trong đó trước khi UNION. Tôi đã thử thêm một cột nữa và sử dụng nó để phân loại -

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; 

nhưng tôi không thực hiện nhiều tiến bộ ..

Trả lời

36

Chỉ cần kiểm tra rằng điều này sẽ làm việc:

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

tôi đã rất gần đó! Cảm ơn! –

1

này sẽ cung cấp cho bạn các bản ghi từ 10 đến 20 và sẽ giúp bạn có started.i sẽ trả lời lại với 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 
Các vấn đề liên quan