如何使用sql获得所需的结果

时间:2015-03-17 06:32:38

标签: mysql sql

SELECT `Id`,`Amount`,'CreationTime' 
FROM `Table1` 
WHERE Amount IS NOT NULL GROUP BY `Id`; 

以下查询给我结果:

有两列,数据按组排序。

   ID       |   Cash    |  CreationTime
   1        |   12      |   2015-10-30 07:59:11.000000
   1        |   10      |   2014-10-07 08:55:27.000000
   1        |   3       |   2012-10-05 06:35:48.000000
   2        |   100     |   2015-10-30 07:59:11.000000
   2        |   10      |   2014-10-07 08:55:27.000000
   3        |   3       |   2012-10-05 06:35:48.000000


现在我想从这个结果中获取一行,具体取决于该行的创建时间。 我需要行数量= 3,因为它的创建时间最长。

我想要的输出:

     ID       |   Cash    |  CreationTime
      1       |   3       |   2012-10-05 06:35:48.000000
      2       |   10      |   2014-10-07 08:55:27.000000
      3       |   3       |   2012-10-05 06:35:48.000000

我的表中有专栏“Createtime”。 所以,任何人都可以帮助我,我该怎么做?

我通过使用获得的结果:

SELECT Id,Amount,Creationtime
FROM Table1
WHERE Amount IS NOT NULL GROUP BY Id order by Creationtime
LIMIT 1;

或者使用这个:

SELECT `Id`,`Amount`,'CreationTime'  
 FROM `Table1` 
 WHERE Amount IS NOT NULL  order by CreationTime asc limit 0,1

RESULT

  ID       |   Cash    |  CreationTime
  1        |   3       |   2012-10-05 06:35:48.000000

3 个答案:

答案 0 :(得分:0)

您的解决方案:

SELECT `Id`,`Amount` 
FROM `Table1` 
WHERE Amount IS NOT NULL GROUP BY `Id` order by Createtime desc Limit 1

答案 1 :(得分:0)

您的查询应该是:

SELECT `Id`,`Amount`,'CreationTime' 
FROM `Table1` 
where DATE_FORMAT('CreationTime', '%h-%i') = '06-35'
WHERE Amount IS NOT NULL GROUP BY `Id`;

如果您想要24小时格式的格式,也可以使用%H。

答案 2 :(得分:0)

 SELECT `Id`,`Amount`,'CreationTime'  
 FROM `Table1` 
 WHERE Amount IS NOT NULL group by Id order by CreationTime asc limit 0,1
相关问题