我有一个产生以下结果的表:
userid statusid no name area month year dateupdated
62 2 763 ABCD Brazil 6 2013 2013-11-26 15:28
62 1 869 ABC Brazil 7 2012 2013-11-26 15:10
62 2 869 ABC Brazil 6 2013 2013-11-26 15:28
62 1 869 ABC Brazil 6 2013 2013-11-26 14:50
61 1 763 ABCD Brazil 6 2013 2013-11-26 14:50
54 1 200 ABCDE US 12 2013 2013-11-26 21:02
32 2 200 ABCDE US 12 2013 2013-11-26 21:03
我希望每行能显示最新的'不'。我尝试过使用max(dateupdated)
,但仍会显示所有记录。我也尝试过分组,但也没有运气。
我只需要查看由dateupdated
确定的最新记录。
有人可以帮助我吗?
答案 0 :(得分:3)
我不确定我理解你的问题,但你可能会得到这样的帮助:
select * from mytable where dateupdated = (select max(dateupdated) from mytable);
编辑:
根据您的澄清,在这种情况下您需要一个相关的子查询。我没试过这个,但也许是这样的:
select *
from mytable a
where dateupdated = (select max(dateupdated) from mytable where no = a.no);
答案 1 :(得分:1)
或者这个:
SELECT *
FROM table
ORDER BY dateupdated DESC
LIMIT 1;
最后的每一个:(这是你想要的吗?)
SELECT *
FROM table t1
WHERE NOT EXISTS(SELECT * FROM table t2
WHERE t1.no = t2.no
AND t2.dateupdated > t1.dateupdated)
答案 2 :(得分:0)
沿LIMIT 1标记;在查询结束时并按降序排序。
答案 3 :(得分:0)
查询:
<强> SQLFIDDLEExample 强>
SELECT t1.*
FROM Table1 t1
LEFT JOIN Table1 t2 ON t2.dateupdated > t1.dateupdated
AND t1.no = t2.no
WHERE t2.no IS NULL
结果:
| USERID | STATUSID | NO | NAME | AREA | MONTH | YEAR | DATEUPDATED |
|--------|----------|-----|-------|--------|-------|------|---------------------------------|
| 62 | 2 | 763 | ABCD | Brazil | 6 | 2013 | November, 26 2013 15:28:00+0000 |
| 62 | 2 | 869 | ABC | Brazil | 6 | 2013 | November, 26 2013 15:28:00+0000 |
| 32 | 2 | 200 | ABCDE | US | 12 | 2013 | November, 26 2013 21:03:00+0000 |