現在、次のデータがあります。
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ステートメントは、各日の日付ではなく、結果全体を並べ替えるだけです。Group Byを使用するときに、最も古い日付ではなく最新の日付を取得できる場合でも、groupby以外の方法を実行する必要があると思います。
編集:以下の作品。しかし、iiはサブクエリからより多くの列を返したいのですが、どうすればよいですか?
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