我正在检查数据库中记录的网站条目。
列包括:浏览器、点击类型ID、引荐者和日期时间。
如果多行具有相同的浏览器、点击类型ID和引荐者,并且时间戳在一分钟内(相互之间)被视为重复。
我需要一条SQL语句,可以根据上述条件查询这些重复项。
非常感谢您的帮助。
列包括:浏览器、点击类型ID、引荐者和日期时间。
如果多行具有相同的浏览器、点击类型ID和引荐者,并且时间戳在一分钟内(相互之间)被视为重复。
我需要一条SQL语句,可以根据上述条件查询这些重复项。
非常感谢您的帮助。
SELECT
T1.browser,
T1.click_type,
T1.referrer,
T1.datetime,
T2.datetime
FROM
My_Table T1
INNER JOIN My_Table T2 ON
T2.browser = T1.browser AND
T2.click_type = T1.click_type AND
T2.referrrer = T1.referrer AND
T2.datetime > T1.datetime AND
T2.datetime <= DATEADD(mi, 1, T1.datetime)
为了防止插入
INSERT MyTable (browser, click_type_id, referrer, [datetime])
SELECT
@browser, @click_type_id, @referrer, @datetime
WHERE
NOT EXISTS (SELECT *
FROM
MyTable M2
WHERE
browser = @browser AND click_type_id = @click_type_id AND referrer = @referrer
AND
[datetime] < DATEADD(minute, -1, @datetime))
在现有数据中查找(依赖于smalldatetime的准确性,可能有助于避免问题,如对问题的评论所述)
SELECT
browser, click_type_id, referrer, COUNT(*)
FROM
MyTable
GROUP BY
browser, click_type_id, referrer, (CAST [datetime] AS smalldatetime)
HAVING
COUNT(*) > 1