使用条件按时加入两个表,sql

时间:2012-08-15 20:50:29

标签: mysql sql

我正在尝试加入两个表,但问题是,作为一个条件,我需要他们的字段“时间”大致相同。

让我写一点清楚,这是我现在想做的事情。

SELECT location
FROM retailer
LEFT JOIN imovo
ON retailer.time=imovo.time.

现在,我真正需要的不是这个:retailer.time = imovo.time但是我需要零售商表中字段的秒数与imovo时间字段不超过4秒之间的差异。

让我解释一下,让我们假设零售商的时间字段说:11:11:23如果来自imovo的时间介于:11:11:23和11:11:26之间我应该加入这两个表

那么,你能帮我解决这个问题吗? 谢谢!

5 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但我认为它应该可行:

imovo.time between retailer.time and retailer.time + interval 4 second

答案 1 :(得分:1)

...
ON addtime(retailer.time, '0:0:4')<imovo.time
AND retailer.time >imovo.time

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_addtime http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime

答案 2 :(得分:0)

按小时和分钟进行连接,并将where子句添加为

伪代码 其中(imovo.time - retailer.time)&lt; 4秒

答案 3 :(得分:0)

如果你想做一个早期的海报建议,并按小时和分钟加入你可以尝试内置的HOUR和MINUTE功能。参见:

参考文献&amp;有用的页面:

[CiteHistory Record]

答案 4 :(得分:0)

我认为MySQL不支持INTERVAL(无法在手册中快速找到它),如果是的话,将@grossvogel的答案与+/- 4混合以使你的保证金在双方都有效。

SELECT location
FROM retailer
LEFT JOIN imovo
ON TO_SECONDS(imovo.time) BETWEEN TO_SECONDS(retailer.time) - 4 AND TO_SECONDS(retailer.time) + 4