按照MySQL -- join between tables in 2 different databases?的建议,我使用以下格式从不同的mysql数据库检索具有跨两个表的共享列值的数据。
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;我想从表中获取相同日期、小时和分钟的共享值。然而,我意识到,由于我的两个表的时间戳列中的时间戳值(来自不同的数据库)在记录的秒数2018-01-21 23:30:05与2018-01-21 23:30:15方面略有不同,因此我无法检索任何公共数据。我如何修改我的查询,以便我可以在两个不同数据库的两个表之间查询关于时间戳值的公共数据,同时忽略时间戳列的‘秒’部分?
发布于 2018-01-21 22:11:21
您可以使用
ON t2.datestamp BETWEEN t1.datestamp - INTERVAL 2 SECOND
AND t1.datestamp + INTERVAK 2 SECOND用于JOIN操作中的ON子句。这将为比赛提供4秒的窗口。
当然,如果你把窗口设置得太大,你会得到一些你不想要的匹配,如果你把它设置得太窄,你会错过一些。
发布于 2018-01-21 22:42:24
虽然我认为O.Jones的答案是解决问题的更好方法,但如果你真的需要比较两个时间戳“忽略‘秒’部分”,你可以这样做:
SELECT <...>
FROM A.table1 t1
JOIN B.table2 t2
ON t2.column2 BETWEEN date_format(t1.column1, '%Y-%m-%d %H:%i:00')
AND date_format(t1.column1, '%Y-%m-%d %H:%i:59')或者更准确地说:
ON t2.column2 >= date_format(t1.column1, '%Y-%m-%d %H:%i:00')
AND t2.column2 < date_format(t1.column1, '%Y-%m-%d %H:%i:00') + interval 1 minute或
ON t2.column2 >= t1.column1 - interval second(t1.column1) second
AND t2.column2 < t1.column1 - interval second(t1.column1) second + interval 1 minutehttps://stackoverflow.com/questions/48367641
复制相似问题