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 回答