我左表中的每一行在右表中只有一个匹配(右表是包含所有行的主表;左表仅包含这些行的子集)。每个表中的行的时间戳不完全匹配,但通常在彼此的1秒内。因此,当我加入表格时,我必须使用:如何防止INNER JOIN返回多个匹配?
FROM left_table INNER JOIN right_table
ON left_table.timestamp BETWEEN right_table.timestamp - .00015 AND right_table.timestamp + .00015
--This is approximately a 2 second wide range since this is a DATETIME field
AND left_table.name = right_table.name
AND ........
除时间戳之外,其他所有条件都完全匹配。有没有解决的办法?
大多数情况下,这足以返回只有一行,但有时当一秒钟内有两个相同的行时,它们都会被返回。
你可以尝试不同的,或TOP 1. – 2012-03-16 21:15:35
在您的where子句中的好方法,你的意思是 打开之间right_table.timestamp left_table.timestamp - 。 00015 AND right_table.timestamp + .00015 – David 2012-03-16 21:21:04
我想这就是我要做的。我只是重新评估了这个问题,我认为只要我使用“DISTINCT”就可以返回多个结果。时间跨度非常狭窄,以至于我需要从连接中获取标准。谢谢! – eek142 2012-03-16 21:22:21