阻止MySQL连接影响结果集
我有一个连接的问题,我想这将是一个简单的解决办法(我想我有一个大脑放屁) 以下是我当前的工作查询:阻止MySQL连接影响结果集,mysql,sql,innodb,Mysql,Sql,Innodb,我有一个连接的问题,我想这将是一个简单的解决办法(我想我有一个大脑放屁) 以下是我当前的工作查询: SELECT ADDTIME(journey.departure, notrelatedtoquestion) AS departure FROM journey GROUP BY journey.id ORDER BY departure 以下是我想工作但无法工作的查询: SELECT ADDTIME(journey.departure, notrelatedtoquestion) AS de
SELECT ADDTIME(journey.departure, notrelatedtoquestion) AS departure
FROM journey
GROUP BY journey.id
ORDER BY departure
以下是我想工作但无法工作的查询:
SELECT ADDTIME(journey.departure, notrelatedtoquestion) AS departure
FROM journey
JOIN journey_non_operation ON journey_non_operation.journey = journey.code
WHERE NOW() NOT BETWEEN journey_non_operation.date_start AND journey_non_operation.date_end
GROUP BY journey.id
ORDER BY departure
好的,它正在工作,但问题是,由于新加入的travely\u non\u操作
表的内容,它更改了结果集
我想要达到的目标很简单。我只想筛选出旅程非\u操作
表中具有今天日期的旅程。但是,由于每次行程都有许多非运行日期,因此它正在改变结果集
以下是第一次和第二次查询的结果:
------
如何停止旅程\u非\u操作
连接以避免影响结果集,但使其不会选择id介于非操作日期之间的旅程
行程非操作的表结构:
id
-旅程id
-开始日期
-结束日期
谢谢 您可以使用
不在
操作符代替连接
:
SELECT ADDTIME(journey.departure, notrelatedtoquestion) AS departure
FROM journey
WHERE journey.code NOT IN (SELECT journey
FROM journey_non_operation
WHERE NOW() NOT BETWEEN date_start AND
date_end)
GROUP BY journey.id
ORDER BY departure
如果使用LEFT JOIN并将BETWEEN子句作为ON的一部分,则每个匹配都意味着不应显示旅程。因此,只需在左联接后显示不匹配记录的行
SELECT journey.id, ADDTIME(journey.departure, notrelatedtoquestion) AS departure
FROM journey
LEFT JOIN journey_non_operation ON journey_non_operation.journey = journey.code
AND NOW() BETWEEN journey_non_operation.date_start AND journey_non_operation.date_end
WHERE journey_non_operation.id is null
GROUP BY journey.id
ORDER BY departure
所以,可能有一些旅程的id与旅程\u非\u操作中的任何行都不匹配,对吗?