我按時間接近分組了一些記錄。我現在做的權利(在unixtime時間戳),將組分割成單個記錄的有效方法
首先,我做選擇子搶那是我的興趣記錄,
(SELECT timestamp AS target_time FROM table WHERE something = cool) AS subselect
然後我想看看是接近紀錄在那些時間,
SELECT id FROM table, subselect WHERE ABS(target_time - timestamp) < 1800
但這裏是我打我的問題。我只想要在target_time
周圍的記錄之間的時間差大於20分鐘的記錄。所以要做到這一點,我按target_time
分組,並添加一個HAVING
部分。
SELECT id FROM table, first WHERE ABS(target_time - timestamp) < 3600
GROUP BY target_time HAVING MAX(timestamp) - MIN(timestamp) > 1200
這是偉大的,所有我不喜歡的記錄都消失了,但現在我只顯示組,第一id
當我真的希望所有的ids
的。我可以使用GROUP_CONCAT
,但是這給我一個混亂,我不能再做任何疑問。我真的希望得到所有這些創建的組返回的ids
。我需要另外的SELECT
聲明嗎?或者,有沒有更好的方法來構建我所得到的?
謝謝,
一個SQL結點。
你想要什麼?你首先說你想按時間間隔分組。你這樣做,然後抱怨你每個組只能得到一個記錄,這是GROUP應該做的事情(以及你首先說你想要的)。所以我有些困惑。 – jira 2010-09-16 18:46:08
對不起,我想我最初的問題隨着我寫這個問題而改變。真正的問題是我需要對記錄進行分組,以便使用聚合函數來刪除一些我不需要的記錄。但是,我需要去分組?我的記錄,所以我可以單獨訪問ID。我不知道最有效的方法。我會盡快編輯謝謝你。 – 2010-09-16 19:05:19