39

テーブルがあり、最後に作成された 10 件のレコードと、id が x であるレコードを返すクエリが必要です。

私はやろうとしています -

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

LIMITでも、前に入れられそうにないUNION。別の列を追加して、それを並べ替えに使用しようとしました-

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;

だけどあまり進んでいない..

4

2 に答える 2

76

これが機能することを確認しました:

(SELECT * FROM catalog_productimage
ORDER BY date_modified
LIMIT 10)
UNION
SELECT * FROM catalog_productimage
WHERE id=5;
于 2012-11-27T12:28:39.637 に答える
1

これにより、10 番目から 20 番目までのレコードが得られます。開始する必要があります。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  
于 2012-11-27T12:26:40.813 に答える