SQL Union All with order by和limit(Postgresql)

mic*_*ael 6 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;
Run Code Online (Sandbox Code Playgroud)

"UNION"第4行或附近的语法错误:UNION ALL

每个SELECT独立的执行都很好.我的猜测是关于ORDER BY... LIMIT 1可能的?

Luk*_*zda 15

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

(SELECT <property1>, <property2>
FROM <table1> 
ORDER BY <condition> LIMIT 1)
UNION  ALL
(SELECT <property1>, <property2>
FROM <table2> 
WHERE <condition> ORDER BY <condition> LIMIT 1);
Run Code Online (Sandbox Code Playgroud)

SqlFiddleDemo

您还可以订购最终查询:

(SELECT 'a' AS col
ORDER BY col LIMIT 1)
UNION ALL 
(SELECT 'b' AS col
ORDER BY col  LIMIT 1)
ORDER BY  col DESC
Run Code Online (Sandbox Code Playgroud)


her*_*rin 9

@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
Run Code Online (Sandbox Code Playgroud)

否则,您仅选择 select 1 和 select 2 的两个最低列中的最高列(如果有)
(而不是所有列中最高的列)
,并且您也不能忘记最后的 LIMIT 1 。