研究員程序員,一些,如果條件
我有一個表,我有以下欄目奇怪查詢:
[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(
時間)
,user_id
其中min(
時間)
我有最少的時間在哪裏刪除並不是虛假的。但!!!如果該日期的唯一一行已經刪除= true,那麼它必須返回該行。所以它必須返回以下行:
[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 |
該查詢幾乎返回正確的結果,除了ID:1,這必須是ID:2,因爲我t是該用戶在該日期的最早時間。 – 2013-02-23 06:36:24
我編輯了我的答案,你能否改變你的查詢來滿足我的需求? – 2013-02-23 07:06:20
工作..這真的很有趣..感謝指出這:) – 2013-02-23 07:11:50