根据另一列的最大值选择每个列的值之一

时间:2018-08-02 16:29:39

标签: mysql sql

我需要根据最新的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
    )

3 个答案:

答案 0 :(得分:1)

您可以将内部联接与按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 

答案 1 :(得分:0)

我认为您可以尝试这样的事情:-

SELECT prod_numb, cost_amt 
   FROM product_cost WHERE 
sale_date = (SELECT max(sale_date) FROM product_cost);

答案 2 :(得分:0)

谢谢大家,但我想通了。

 SELECT pm.prod_numb, pm.long_desc, pm.price_amt, tp.location_id, tp.adult_child_flg, pc.cost_amt FROM product_master pm INNER JOIN ticket_product tp ON pm.prod_numb = tp.prod_numb LEFT OUTER JOIN product_cost pc ON pc.prod_numb = pm.prod_numb AND pc.sale_date = TODAY WHERE pm.status = 'A'