繁体   English   中英

选择与最大字段有关

[英]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 bytop

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 alltop 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM