sql标准 - 在聚合函数中使用聚合函数

时间:2013-05-12 10:55:27

标签: sql aggregate-functions

我有3个不同结构的表,它们共享相同的逻辑列:price。我想从所有3张桌子的所有记录中找到最大的价格。我正在尝试这样的事情:

SELECT MAX(price) FROM (

SELECT MAX(price) FROM pc
UNION
SELECT MAX(price) FROM printer
UNION
SELECT MAX(price) FROM laptop

);

但我收到语法错误:Incorrect syntax near ';'.。有什么问题以及它应该是什么样的?这应该与SQL标准兼容,而不是特定的RDBMS。

2 个答案:

答案 0 :(得分:3)

你需要为子查询提供别名,

SELECT MAX(price) max_price
FROM 
(
    SELECT price FROM pc
    UNION ALL
    SELECT price FROM printer
    UNION ALL
    SELECT price FROM laptop
) subquery

无需在子查询中获取最高价格。

答案 1 :(得分:2)

试试这个sql。

SELECT MAX(price) FROM (

SELECT MAX(price) as price FROM pc
UNION
SELECT MAX(price) as price FROM printer
UNION
SELECT MAX(price) as price FROM laptop

) t;