具有order by和limit的SQL联合(Postgresql)

具有order by和limit的SQL联合(Postgresql),sql,postgresql,union,union-all,Sql,Postgresql,Union,Union All,在以下查询中,我得到语法错误: SELECT <property1>, <property2> FROM <table1> ORDER BY <condition> LIMIT 1 UNION ALL SELECT <property1>, <property2> FROM <table2> WHERE <condition> ORDER BY <condition> LIMIT 1

在以下查询中,我得到语法错误:

SELECT <property1>, <property2>
FROM <table1> 
ORDER BY <condition> LIMIT 1
UNION  ALL
SELECT <property1>, <property2>
FROM <table2> 
WHERE <condition> ORDER BY <condition> LIMIT 1;
在联合处或联合附近出现语法错误 第4行:全体工会

每个SELECT单机版执行良好。我猜是关于订单的。。。限制1可能?

用以下内容包装每个查询:


@lad2025的第一个答案是正确的, 但是下面的泛化是不正确的,因为必须是包括desc子句在内的整个条件

这是正确的代码:

(SELECT 'a' AS col
ORDER BY col DESC LIMIT 1)
UNION ALL
(SELECT 'b' AS col
ORDER BY col DESC LIMIT 1)
ORDER BY col DESC LIMIT 1
否则,只选择select 1和select 2(如果有)的两个最低列中最高的一个 而不是所有的科尔中最高的
您也不能忘记末尾的限制1。

可能是ORDER BY子句。由于您使用的是UNION,因此需要在以后应用ORDER BY。我删除了SQL Server标记,因为它不支持LIMIT。您列出了两种不同的平台。在其中一个平台上,这可能是由于语法错误造成的,而在另一个平台上,这可能会起作用。你用的是哪一个?实际上是postgresql
(SELECT 'a' AS col
ORDER BY col LIMIT 1)
UNION ALL 
(SELECT 'b' AS col
ORDER BY col  LIMIT 1)
ORDER BY  col DESC
SELECT <property1>, <property2>
FROM <table1> 
LIMIT 1
UNION  ALL
SELECT <property1>, <property2>
FROM <table2> 
WHERE <condition> ORDER BY <condition> LIMIT 1;
(SELECT 'a' AS col
ORDER BY col DESC LIMIT 1)
UNION ALL
(SELECT 'b' AS col
ORDER BY col DESC LIMIT 1)
ORDER BY col DESC LIMIT 1