从MAX()查询中获取相关字段

时间:2018-01-26 19:48:23

标签: sql subquery

我正在尝试编写一个子查询,该子查询将选择最高价格以及与该最高价格相关联的商品名称。

例如:

ID | Price | Item Name
1 | 28.99 | Lamp
2 | 13.99 | USB Cable

我期待得到" 28.99"和" Lamp"用我的子查询。主查询看起来像这样:

SELECT
    i.id
FROM
    inventory i

我在主查询中的子查询看起来像这样:

SELECT
    i.id,
    (SELECT MAX(pl.price) FROM price_list pl WHERE pl.id = i.id) AS highest,
    (SELECT MAX(pl.item_name) FROM price_list pl WHERE pl.id = i.id) AS highestName
FROM
    inventory i

但是,在项目名称上使用MAX()将返回排名最高的字母名称,这不是我想要的。我想让物品名称与最高价格相关联。最有效的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用子查询匹配where

  select price as  highest , item_name  highestName
  from price  
  where price = (
    select max(Price)
    from price_list
  )

答案 1 :(得分:0)

可以使用以下查询完成:

SELECT Price, Name
FROM price_list
WHERE Price = (SELECT MAX(PL.Price) FROM price_list PL)