我的表格中包含keys
,buckets
和time
Key Bucket Time
1 A x
1 B x
1 C x
2 A x
3 A x
4 A x
1 A y
我希望获得一个包含> = x
时间密钥的列表,并且不会在y
和x
时间之间重复。在上表中,所有键的时间都为> = x
,但最后一个键已被触及,将从列表中删除1 A x
,从而产生类似这样的内容
Key Bucket
1 B
1 C
2 A
3 A
4 A
我正在尝试在MySQL中执行此操作,而且我很新,并且对SQL文档非常困惑。
我尝试过这样的事情......我不知道它在做什么。
SELECT keyname, bucket, log.time FROM log INNER JOIN (SELECT time FROM log GROUP BY keyname) dup ON log.time = dup.time;
希望我已经很好地描述了这个问题。
编辑:
key是一个字符串
bucket是一个字符串
时间是一个时间对象,如“15 / May / 2013:18:35:03 +0000”
答案 0 :(得分:1)
我的理解是,您希望根据Time
字段获取最新记录,同时仅返回Key + Bucket的唯一组合。
要做到这一点:
SELECT `Key`, `Bucket`, MAX(`Time`) FROM `log` GROUP BY `Key`, `Bucket`;
答案 1 :(得分:1)
假设我现在正确告诉你,这是你的答案。这将返回日志结果,其中在给定时间范围内只有一个匹配。
所以,如果找到两个匹配,它会消除它们两个,对吧?
SELECT `keyname`, `bucket`, MAX(`time`)
FROM `log`
WHERE `time` > 'x'
GROUP BY `keyname`, `bucket`
HAVING COUNT(*) = 1