我有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。
答案 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;