2013-11-27 27 views
0

我有产生以下结果表: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确定的最新记录。

任何人都可以请帮助我吗?

+1

您需要检索的子查询MAX(dateudpated)的''statusid'',和使用它返回具有“no”值的完整行 – nrathaus

+0

我需要显示每个“否”的最新行。我想通过'dateupdated'来确定最新的行。例如,'no'763有两条记录,我想只显示每个'dateupdated'的最新条目 – brad115

+0

我想检索所有记录,但'不'相同时,只显示' dateupdated' – brad115

回答

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 | 
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); 
+2

我想他也想用itrid等,但我不确定 – nrathaus

+0

如果我有这两条记录: 62 1 869 ABC巴西7 2012 2013-11-26 15:10 62 2 869 ABC巴西6 2013 2013-11-26 15:28 我只想按日期显示最新条目。这就像是某种分组 – brad115

+0

谢谢,我试过了,但不幸的是仍然显示两个记录,不应该最新更新的'dateupdated'记录只 – brad115

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) 
+0

这只会显示一条记录。我需要显示所有记录,以及“否”存在的位置,只显示最新记录 – brad115

+0

@ user3040483编辑:我添加查询:对于每个不返回最新记录。 – slavoo

+0

谢谢,我只有一张桌子?你提到两张桌子? – brad115

0

标签沿着限制1;在查询结束并按降序排序。