0

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

这是我的领域

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 

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

4

2 回答 2

0

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

你完成了。

于 2013-11-08T14:02:29.637 回答
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;
于 2013-11-08T14:15:22.417 回答