仲間のプログラマー、
次の列があるテーブルを取得しました:
[tablename - usertimes]
id - int(11)
user_id - int(11)
time - timestamp
deleted - tinyint(1)
次の行があると想像してください。
[id] [user_id] [time] [deleted]
------------------------------------------
1 1 2013-02-25 16:40 0
2 1 2013-02-25 14:40 0
3 1 2013-02-25 11:20 1
4 1 2013-02-26 11:20 1
5 2 2013-02-23 16:40 0
6 2 2013-02-25 16:40 0
今、私は時間でグループ化する必要がdate(
あり)
ます。ここで、削除された時間はfalseではありません。しかし!!!その日付の唯一の行がdeleted=trueである場合、それを返す必要があります。したがって、次の行を返す必要があります。user_id
min(
)
[id] [user_id] [time] [deleted]
------------------------------------------
2 1 2013-02-25 14:40 0
4 1 2013-02-26 11:20 1
5 2 2013-02-23 16:40 0
6 2 2013-02-25 16:40 0
これに対する最善のアプローチは何でしょうか?すべての行を取得して、コードでチェックする必要がありますか?これについてはクエリが可能である必要があると思いますが、頭を包むことはできません。
編集:
誰かがこのフィドルで遊んでくれませんか?: http ://sqlfiddle.com/#!2 / 4f91a
テーブルの内容と必要な出力がコメント化されています。
EDIT2:
これは、このフィドルによる出力です:http ://www.sqlfiddle.com/#!2/3808b/1
| ID | USER_ID | DELETED | TIME |
---------------------------------------------
| 1 | 1 | 0 | 2013-02-25 14:40 |
| 4 | 1 | 1 | 2013-02-26 11:20 |
| 5 | 2 | 0 | 2013-02-23 16:40 |
| 6 | 2 | 0 | 2013-02-25 16:40 |
これは私が達成したいことに本当に近いです。私が達成したいのはこの結果であるため 、最初のIDに注意してください。
| ID | USER_ID | DELETED | TIME |
---------------------------------------------
| 2 | 1 | 0 | 2013-02-25 14:40 |
| 4 | 1 | 1 | 2013-02-26 11:20 |
| 5 | 2 | 0 | 2013-02-23 16:40 |
| 6 | 2 | 0 | 2013-02-25 16:40 |