选择时间戳和相应值中每天的最后一个条目

时间:2012-03-04 12:03:21

标签: mysql inner-join

我有下表“test”,

enter image description here

让表格中的数据如下,

enter image description here

现在我想为每一天选择最后一个条目(只有日期而不是时间戳),并将相应的值作为两列。一个是日期,另一个是价值。

我只能使用以下查询

获取日期
SELECT max( date( date ) ) AS date
FROM test
GROUP BY date( date )
LIMIT 0 , 30 

但是我无法获得这些日期的相应值。 我该怎么做..?通过谷歌搜索,我发现我必须使用连接来实现这一点,但我再次无法使用连接而没有任何错误。

3 个答案:

答案 0 :(得分:2)

将您的查询加入原始表:

SELECT
  baseview.`date` AS `date`,
  `test`.`value` AS `value`
FROM `test`
  INNER JOIN (
    SELECT max(date) AS date
    FROM test
    GROUP BY date( date )
    LIMIT 0 , 30 
  ) AS baseview ON `test`.`date`=baseview.`date`

答案 1 :(得分:1)

首先将列名从保留关键字date更改为不需要引用的内容:

ALTER TABLE test
    CHANGE COLUMN `date` timestamp_entered TIMESTAMP NOT NULL
                         --- or some other sensible name

然后你可以使用:

SELECT
    grp.date_entered  
  , t.value 
FROM 
        test  AS t
    JOIN 
        ( SELECT 
            , DATE( timestamp_entered )  AS date_entered
              MAX( timestamp_entered )   AS max_timestamp
          FROM 
              test
          GROUP BY
              DATE( timestamp_entered )
        ) 
          AS grp 
      ON 
          grp.max_timestamp = t.timestamp_entered

答案 2 :(得分:0)

这样的东西
SELECT t2 . * 
FROM test t1
INNER JOIN test t2 ON t1.date = t2.date
GROUP BY DATE( t1.date ) 
ORDER BY t1.date
LIMIT 0 , 30

它只是检索 max 编辑:第一个)日期(全天),并为每一行选择信息。