我搜索了高低,并尝试了很多方法,但仍然不是我想要的结果,所以这里是问题
这是我的字段
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
现在我的搜索总是说做子功能并获得最大日期,然后进行加入并加入到最大日期,我仍然得不到我想要的我理解它的逻辑我只是不明白为什么我没有得到正确的价值观
答案 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;