1

我有 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。

4

2 回答 2

3

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

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

没有必要在子查询中获得最高价格。

于 2013-05-12T10:57:34.130 回答
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;
于 2013-05-12T11:07:57.470 回答