我按时间接近分组了一些记录。我现在做的权利(在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