一个记录现在即时通讯具有下列数据:SQL - 每日期
Name Time
picture 2012-07-23 17:00:00
picture 2012-07-24 18:00:00
picture 2012-07-24 19:00:00
picture 2012-08-03 08:40:06
picture 2012-08-03 08:42:39
picture 2012-08-03 08:54:03
picture 2012-08-03 10:38:58
picture 2012-08-03 10:39:55
picture 2012-08-06 08:12:14
而且下面的SQL查询:
SELECT DATE_FORMAT(DATE(DATE_SUB(time,INTERVAL 4 HOUR)),GET_FORMAT(DATE,'ISO'))
as time, uri, media_id, description
FROM media WHERE place_id = 1
GROUP BY time ORDER BY time DESC
效果很好,给我我想要的数据。 但是,每个独特日期的数据按每个“日”的最早日期排序。我想要它由最新订购。 Order By声明只是排序整个结果,而不是每天的日期。如果o使用Group By时可以采用最新的日期而不是最早的日期,但是我猜想除了group by之外,我还得设计其他的东西。
编辑:下面的作品。但我想从子查询中返回更多列,我该怎么做?
SELECT Distinct DATE_FORMAT(DATE(DATE_SUB(time, INTERVAL 4 HOUR)) ,
GET_FORMAT(DATE, 'ISO')) AS date,
(SELECT type FROM media WHERE
DATE_FORMAT(DATE(DATE_SUB(time, INTERVAL 4 HOUR)) ,
GET_FORMAT(DATE,'ISO')) = date Order by time DESC Limit 1) as name
FROM media
GROUP按时间倒序按时间倒序? – imm 2012-08-07 06:03:34
问题是Group By不是一个排序函数。所以它没有区别。我想我需要一个子查询。 – joxxe 2012-08-07 06:17:57
我的不好。 MySQL文档似乎暗示你可以做到这一点。即,在此页面上:http://dev.mysql.com/doc/refman/5.0/en/select.html ...所以如果它不这样做,我会对ASC | DESC感兴趣是通过 – imm 2012-08-07 06:21:31