mySQL最大值对应

时间:2013-11-08 14:00:12

标签: mysql

我搜索了高低,并尝试了很多方法,但仍然不是我想要的结果,所以这里是问题

这是我的字段

cntrycd | date        | type | desc | value

tn      | 2013-08-16  | pr   | for  | 112 <--
tn      | 2013-08-15  | pr   | for  | 114 
tn      | 2013-08-14  | pr   | for  | 118 
tn      | 2013-08-16  | pr   | agn  | 118 <-- 
tn      | 2013-08-15  | pr   | agn  | 117 
tn      | 2013-08-14  | pr   | agn  | 112 
tn      | 2013-08-15  | pr   | mid  | 114 
tn      | 2013-08-14  | pr   | mid  | 118 
tn      | 2013-08-16  | pr   | mid  | 118 <-- 
tn      | 2013-08-15  | pr   | agn  | 117 
tn      | 2013-08-16  | ot   | for  | 112 <--
tn      | 2013-08-15  | ot   | for  | 114 
tn      | 2013-08-14  | ot   | for  | 118 
tn      | 2013-08-16  | ot   | agn  | 118 <--
tn      | 2013-08-15  | ot   | agn  | 117 
tn      | 2013-08-14  | ot   | agn  | 112 
tn      | 2013-08-15  | ot   | mid  | 114 
tn      | 2013-08-14  | ot   | mid  | 118 
tn      | 2013-08-16  | ot   | mid  | 118 <-- 

我想要的是获取最大日期和相应的值,使它看起来像这样

tn      | 2013-08-16  | pr   | for  | 112 
tn      | 2013-08-16  | pr   | agn  | 118 
tn      | 2013-08-16  | pr   | mid  | 118 
tn      | 2013-08-16  | ot   | for  | 112 
tn      | 2013-08-16  | ot   | agn  | 118 
tn      | 2013-08-16  | ot   | mid  | 118 

现在我的搜索总是说做子功能并获得最大日期,然后进行加入并加入到最大日期,我仍然得不到我想要的我理解它的逻辑我只是不明白为什么我没有得到正确的价值观

2 个答案:

答案 0 :(得分:0)

SELECT * FROM table WHERE date = (SELECT MAX(date) FROM table)

你已经完成了。

答案 1 :(得分:0)

根据需要进行调整......

SELECT x.*
  FROM my_table x
  JOIN 
     ( SELECT `cntryd`
            , `type`
            , `desc`
            , MAX(date) max_date
         FROM my_table
        GROUP
           BY `cntryd`
            , `type`
            , `desc`
     ) y
    ON y.cntryd = x.cntryd
   AND y.type = x.type
   AND y.desc = x.desc
   AND y.max_date = x.date;