![](/img/trans.png)
[英]SELECT MIN Date(using WINDOW function) and MAX Date(with related field using JOIN) together
[英]select related to max field
我有3张桌子:笔记本电脑,个人电脑,带有型号和价格字段的打印机。
我需要在所有这些表的所有产品中获得最高价格。
我做了联合以获得每个表的最大价格和模型字段:
SELECT model,price
FROM (SELECT model, price
FROM pc
WHERE price = (SELECT MAX(price) FROM pc)
UNION
SELECT model, price
FROM laptop
WHERE price = (SELECT MAX(price) FROM laptop)
UNION
SELECT model, price
FROM printer WHERE price = (SELECT MAX(price) FROM printer)
) AS X
结果,我收到了
型号| 价钱
1233 | 980.0000
1276 | 400.0000
1288 | 400.0000
1750 | 1200.0000
现在我只能获得最高价格的模型(在这种情况下为'1750')。
如何使用order by
和top
?
SELECT TOP 1 model, price
FROM (SELECT model, price
FROM pc
UNION ALL
SELECT model, price
FROM laptop
UNION ALL
SELECT model, price
FROM printer
) t
ORDER BY price DESC;
注意:如果您有索引,这可能不是获取所需信息的最有效方法。 如果性能存在问题,您将需要提供有关表及其数据设计的更多信息。
使用union all
和top 1
select top 1 model, price
from (
select top 1 model, price
from pc
order by price desc
union all
select top 1 model, price
from laptop
order by price desc
union all
select top 1 model, price
from printer
order by price desc
) as u
order by price desc
我不知道这是否会创建与戈登的答案不同的执行计划...我要去找出答案。
此答案产生的查询执行计划与SQL Server 2012中Gordon的答案相同 ,并且由于Gordon的答案更简洁,因此我会选择该答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.