2012-11-27 17 views
21

テーブルがあり、作成された最後の10個のレコードとIDのレコードxを返すクエリが必要です。LIMITステートメントで2つのSQL SELECTクエリを結合する

私がやろうとしている -

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

をしかし、私はUNION前にそこにLIMITを置くことができるようにそれは見えません。これは20日に10日からあなたのレコードを与えるだろうし、あなたがstarted.i取得する必要があります。..

答えて

36

に返信します:

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

が、私はとても近くありました!ありがとう! –

1

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; 

が、私はあまり進展していないよ - 私は別の列を追加し、並べ替えのためにそれを使用してみましたただ、これが動作することを確認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 
関連する問題