You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:如何编写带OR日期条件的MySQL LEFT JOIN SQL语句?

嘿,你的思路是对的——LEFT JOIN的ON子句里完全可以用OR来组合多个关联条件!问题主要出在时间加1秒的语法上,你写的table_b.date (+ 1 second)不是标准SQL的写法,不同数据库有各自的时间运算函数,我给你整理几个主流数据库的正确写法:

1. MySQL/MariaDB

用DATE_ADD()函数或者直接加INTERVAL关键字都可以:

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);

简化版(MySQL支持直接对时间字段加INTERVAL):

SELECT * 
FROM table_a 
LEFT JOIN table_b 
  ON table_a.date = table_b.date 
  OR table_a.date = table_b.date + INTERVAL 1 SECOND;

2. PostgreSQL

直接用INTERVAL '1 second'做加法即可:

SELECT * 
FROM table_a 
LEFT JOIN table_b 
  ON table_a.date = table_b.date 
  OR table_a.date = table_b.date + INTERVAL '1 second';

3. SQL Server

用DATEADD()函数来实现时间增量:

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

小提醒

如果table_b里有多条记录同时满足两个条件(比如某条table_a.date既匹配table_b的原时间,又匹配加1秒后的时间),LEFT JOIN会返回所有匹配的行,可能导致结果集行数变多。如果需要避免这种重复,可以考虑用DISTINCT,或者先通过子查询对table_b的日期做去重处理。

内容的提问来源于stack exchange,提问作者Saint Robson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:33:40