我有下表“test”,
让表格中的数据如下,
现在我想为每一天选择最后一个条目(只有日期而不是时间戳),并将相应的值作为两列。一个是日期,另一个是价值。
我只能使用以下查询
获取日期SELECT max( date( date ) ) AS date
FROM test
GROUP BY date( date )
LIMIT 0 , 30
但是我无法获得这些日期的相应值。 我该怎么做..?通过谷歌搜索,我发现我必须使用连接来实现这一点,但我再次无法使用连接而没有任何错误。
答案 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 (编辑:第一个)日期(全天),并为每一行选择信息。