使用LIMIT语句组合两个sql select查询(在postgres中)

Aid*_*wen 28 sql postgresql union select limit

我有一个表,我想要一个查询,返回创建的最后10条记录加上id为x的记录.

我正在努力 -

SELECT * FROM catalog_productimage
ORDER BY date_modified
LIMIT 10
UNION
SELECT * FROM catalog_productimage
WHERE id=5;
Run Code Online (Sandbox Code Playgroud)

但它看起来不像我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;
Run Code Online (Sandbox Code Playgroud)

但我没有取得多大进展..

suf*_*leR 53

刚检查一下这是否有效:

(SELECT * FROM catalog_productimage
ORDER BY date_modified
LIMIT 10)
UNION
SELECT * FROM catalog_productimage
WHERE id=5;
Run Code Online (Sandbox Code Playgroud)

  • 需要使用圆括号,因为“UNION”实际上是 select 语句的一部分,而 select 语句语法是“LIMIT”必须位于“UNION”之后。所以你需要明确结束第一个表达式。另外,由于这种语法,您可以在联合末尾使用“LIMIT”。这样“LIMIT”将应用于联合的结果。有关更多详细信息,请参阅[选择文档](https://www.postgresql.org/docs/current/sql-select.html)。 (4认同)