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

标签 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() 将返回排名最高的字母名称,这不是我想要的。我想获取与最高价格相关的商品名称。最有效的方法是什么?

最佳答案

您可以使用子查询来匹配 where

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

关于sql - 从 MAX() 查询中获取相关字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468540/

相关文章:

mysql - 特定领域的永久结果集

sql - 在在线环境中对非常大的表进行结构更改

SQL 将一列的值分组到另一列

mysql - 在 MySQL 中,如何在子查询中创建 JOIN?

php - 使用 mysql php 运行基于另一个查询的查询

mysql - 无法执行 GROUP_CONCAT

mysql - 按列对行进行排序,然后按另一列对排序后的行进行排序

sql - 如何从行获取 SQL 结果 View 以分隔列

mysql - 提高 SQL 效率

mysql - 如何在 select 语句 if 条件中使用 select 语句