带有OR条件的MySQL LEFT JOIN

时间:2018-05-14 08:48:58

标签: mysql

我有一张桌子:

table_a.date
2018-05-13 17:30:22
2018-05-13 17:30:22
2018-05-13 17:30:22

和:

table_b.date
2018-05-13 17:30:22
2018-05-13 17:30:23
2018-05-13 17:30:23

我需要使用条件LEFT JOIN这些表:table_a.date = table_b.datetable_a.date = table_b.date + 1 second

或多或少是这样的:

SELECT * 
FROM table_a
LEFT JOIN table_b
ON table_a.date = table_b.date OR table_a.date = table_b.date (+ 1 second)

但我不知道如何将OR条件用作LEFT JOIN的要求。什么是正确的SQL?

2 个答案:

答案 0 :(得分:1)

使用DATE_ADD,如下所示:

SELECT * 
FROM table_a
LEFT JOIN table_b
ON table_a.date = table_b.date
OR table_a.date = date_add(table_b.date, interval 1 second)

答案 1 :(得分:1)

为什么你需要检查秒数,只是让两个日期格式相同并检查(如果diff只是几秒钟),删除秒 使用DATE_FORMAT(date, format_mask)

SELECT * FROM table_a LEFT JOIN table_b ON DATE_FORMAT(table_a.date, "%M %d %Y %h %i") = (table_a.date, "%M %d %Y %h %i")