2014-09-20 91 views
0

*编辑:我正在使用sqlite3从多个表中查找最大值的问题

我有一个包含3个表的数据库; pc,笔记本电脑和打印机。其中包括专栏模型和价格。我试图从任何表格中选择最高价格的模型。我的尝试导致我:

select model 
from 
    (select model, max(price) 
    from 
     (select model, price 
     from laptop 
     union all 
     select model, price 
     from printer 
     union all 
     select model, price 
     from pc)); 

它给了我所有表中的最后一个模型。但如果我这样做:

select model, p 
from 
    (select model, max(price) as p 
    from 
     (select model, price 
     from laptop 
     union all 
     select model, price 
     from printer 
     union all 
     select model, price 
     from pc)); 

它给了我正确的结果,但我坚持与价格以及。我不明白这是怎么可能的。

+0

您正在使用什么数据库? (mysql,oracle,sql server等) – 2014-09-20 19:54:37

+0

使用'ORDER BY price DESC LIMIT 1'或'TOP 1 ... ORDER BY price DESC'或任何等价的关系型数据库管理系统。 – Barmar 2014-09-20 19:55:38

+0

@BrianDeMilia我正在使用sqlite。 – 2014-09-20 19:56:47

回答

0

这应该做你想要什么,并会带回的关系,以及:

select x.model 
    from (select model, price 
      from laptop 
     union all 
     select model, price 
      from printer 
     union all 
     select model, price 
      from pc) x 
    join (select max(max_price) as max_price 
      from (select max(price) as max_price 
        from laptop 
       union all 
       select max(price) 
        from printer 
       union all 
       select max(price) 
        from pc)) y 
    on x.price = y.max_price