首页 > 解决方案 > 根据另一列的最大值选择每列值之一

问题描述

我需要根据最近的 sale_date 列返回每个 prod_numb 和 cost_amt 的记录。

基本上我需要这样的东西:

SELECT prod_numb  
     , cost_amt 
  FROM product_cost 
 WHERE MAX(sale_date) 

我知道这不会运行,但它是描述它的最佳方式。有人可以帮助这个查询吗?

Array
(
[0] => Array
    (
        [prod_numb] => 2336
        [cost_amt] => 32.00
        [sale_date] => 2015-01-01
    )

[1] => Array
    (
        [prod_numb] => 2336
        [cost_amt] => 32.00
        [sale_date] => 2015-01-02
    )

[2] => Array
    (
        [prod_numb] => 2458
        [cost_amt] => 32.00
        [sale_date] => 2015-01-03
    )

标签: mysqlsql

解决方案


您可以将内部联接与按 prod_num 分组的子选择一起用于最大日期

select  prod_numb, cost_amt 
FROM product_cost 
inner join (
  select prod_numb, MAX(sale_date) max_date 
  FROM product_cost 
  group by prod_numb
) t on t.prod_numb = product_cost.prod_numb and t.max_date  = product_cost.sale_date 

推荐阅读