2016-11-23 21 views
1

アップロードされた日付フィールドを持つテーブルイメージがあります。同じ日に2つ以上の画像がアップロードされた場合、どのように最新の画像を取得できますか?SQL - 同じ日付の最新データを取得する方法

1.時、分、または秒をチェックします。

2. H:M:Sが同じ場合は、挿入されたIDのシーケンスを確認してください。

ID |  URL |   create   | 
1 | 01.jpg |  2017-02-23 10:24:41 |<<same H:M:s 
2 | 02.jpg |  2017-02-23 10:24:41 |<<same H:M:s 
3 | 03.jpg |  2017-02-23 10:50:00 |<<same H 
4 | 04.jpg |  2017-02-24 21:50:00 |<<others 
5 | 05.jpg |  2017-03-28 17:50:00 |<<others 

出力:私だけ

3 | 03.jpg |  2017-02-23 10:50:00 |<< newer than 1, 2 
4 | 04.jpg |  2017-02-24 21:50:00 | 
5 | 05.jpg |  2017-03-28 17:50:00 | 

答えて

2

ができれば

select created,max(id) maxid 
from (select t1.*,(select count(distinct created) from t 
        where created >=t1.created 
        and cast(created as date)=cast(t1.created as date)) rn 
     from t t1) x 
    where rn=1 

を使用し、与えられた日の最大タイムスタンプを持つすべての行を取得するには取得したいです最新のタイムスタンプと結びついていて、最新のIDだけが必要な場合は、上記のクエリを次のように拡張することができますing。

select y.maxid id,t.url,t.created 
from (
    select created,max(id) maxid 
    from (select t1.*,(select count(distinct created) from t 
         where created >=t1.created 
         and cast(created as date)=cast(t1.created as date)) rn 
      from t t1) x 
    where rn=1 
    group by created 
) y 
join t on t.id=y.maxid and t.created=y.created 
+0

ああ...私は以前これを見ていなかった。しかし、どこにクエリにtable_nameを入れることができますか? – TommyDo

+0

あなたのtablenameでそれを見てどこにでも置き換えてください –

+0

ああ、私は正常にクエリを実行して....しかし、私のプロジェクトに適用することはかなり困難でした。私はCakePHPを使ってクエリをビルドします。これで私は私には難しいことを恐れています。とにかくあなたの助けに感謝します。 (Y) – TommyDo

1
SELECT t1.* 
FROM yourTable t1 
INNER JOIN 
(
    SELECT MAX(create) AS latest, MAX(ID) AS maxID 
    FROM yourTable 
    GROUP BY DATE(create) 
) t2 
    ON t1.create = t2.latest AND 
     t1.ID  = t2.maxID 
+0

おそらく、max createを使用して複数の行を処理する条件を追加します。その場合、オペアンプには最大IDだけが必要です。 –

+0

あなたの提案に感謝しますが、結果は同じです。レコードはまだすべてを選択します。ここに私のクエリは、 'UP SELECT * FROM user_pictures をUP INNER ( SELECT MAX(作成)AS user_pictures FROM 最新DATE(作成)BY GROUP )UP2 ON UP.created = UP2.latest' – TommyDo

+0

@を登録しようvkp私はこの論理を追加しました –

0

方法ORDER BYLIMITを使用してはどうですか?

SELECT * 
FROM Images 
ORDER BY create DESC, ID DESC 
LIMIT 1 

「ORDER」は、イメージを作成し、次にIDでソートします。制限は1のみを選択します。これにより、最新の写真のみが選択されます。

+0

ORDER BYあなたが望むフィールドでデータを注文するだけです。すべてのデータが選択されます。 @Tim Biegeleisenの答えは正しいと思います。 – TommyDo

+0

私は実際にあなたは1日あたり1レコードがほしいと思った。 – Pachonk

+0

はい私は:Dとにかくあなたの答えに感謝します(Y) – TommyDo

関連する問題