我的表格設計有點像這樣。在特定時間段內獲取新記錄
id | date | user_id
1 | 2013-02-02 | 1
2 | 2013-02-02 | 2
3 | 2013-02-02 | 5
4 | 2013-02-03 | 6
5 | 2013-02-03 | 7
6 | 2013-02-03 | 1
現在我想爲特定日期或時間範圍的新用戶選擇記錄。例如,如果我選擇date=date('2013-02-03')
,我只需要新用戶的記錄,即記錄ID 4和5,並且不應該返回6,因爲用戶已經有記錄。
簡單地說,它只應該返回user_id中沒有以前記錄的用戶的記錄。我試圖用不在運算符中編寫查詢,但我不知道如何給日期少於當前記錄日期的參數。
[編輯]
這是我達到了我所在的地方卡住了。
select id from mytable where date=date('2013-02-03') and user_id not in (select user_id from mytable where date<date('2013-02-03'))
這適用於只有一個確切的日期。但是說到時間框架,比如一個月,我無法弄清楚如何獲取內部查詢,其中日期應該是該特定用戶的記錄日期。
[編輯]
使用having子句嘗試此查詢。它返回空的結果。
select id, date, user_id from mytable having min(date(date))>=date("2013-01-02") and min(date(date))<=date("2013-02-02")
好的我得到了這個查詢的問題。它的檢查分鐘(日期)超出所有記錄。我怎樣才能使這個尋找每個user_id最小記錄?
[你有什麼嘗試?](http://whathaveyoutried.com) – 2013-03-02 04:40:02
說實話,試圖搜索谷歌正確的方式這樣做。嘗試了其他方式來實現我的目標,即生成報告。當我無法弄清楚查詢的結構和其他實現目標的方法時,我在這裏問了一個問題。 – Sourabh 2013-03-02 04:45:37
你是否嘗試寫一些SQL? – 2013-03-02 04:46:09