我需要打印MySQL数据库中的条目,这些条目发生在30分钟的时间范围内,但它们必须具有相同的国家/地区。数据库样本如下所示:
TIMESTAMP RULE COUNTRY
2010-10-25 10:01:00 ICMP PING SINGAPORE
2010-10-25 10:25:00 ICMP PING SINGAPORE
2010-10-25 10:45:00 ICMP PING MALAYSIA
2010-10-25 11:00:00 ICMP PING MALAYSIA
2010-10-25 12:20:00 ICMP PING UNITED STATES
2010-10-25 14:30:00 ICMP PING UNITED STATES
如上所述,来自新加坡和马来西亚的记录发生在30分钟内,请帮我显示一个SQL:
COUNTRY RULE
SINGAPORE ICMP PING
MALAYSIA ICMP PING
答案 0 :(得分:2)
select distinct x.country, x.rule
from yourtable x
inner join yourtable y
on x.country=y.country and x.rule=y.rule
and y.timestamp > x.timestamp and y.timestamp < date_add(x.timestamp, interval 30 minute);
如果应包含30分钟,请将<
更改为<=
。
这假设时间戳是唯一的(或者两个“同时”记录不计算的速率)。如果不是这样,则需要使用唯一的列来区分它们或采用不同的方法。