MYSQL - 分组&马克斯?

时间:2013-11-27 06:41:50

标签: mysql

我有一个产生以下结果的表:

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确定的最新记录。

有人可以帮助我吗?

4 个答案:

答案 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 |