有一个时间表,有一个时间字段。填写如下:
10:00:00
10:05:00
10:10:00
10:15:00
10:20:00
10:25:00
10:30:00
10:35:00
10:40:00
10:45:00
10:50:00
10:55:00
11:00:00
11:05:00
11:10:00
11:15:00
11:20:00
11:25:00
11:30:00
还有另外一个表事件:
event_start event_end
10:05:00 10:25:00
10:45:00 11:10:00
如何进行查询,以便显示第一个表中的数据,不包括第二个表的间隔?像这样试过
"SELECT time FROM times WHERE time BETWEEN IN (SELECT event_start FROM events) AND IN (SELECT event_end FROM events)"
但结果是语法错误。
显示第一个表中与第二个表没有间隔的记录?
BETWEEN 使用间隔。
从逻辑上思考:MySQL 应该在什么基础上从代码中的两个数组形成间隔?
答:BETWEEN 不能这样做。IN不能在里面使用。
此外,您的 event_start 大于 event_end,这也不是很合乎逻辑。
尝试加入表格:
FROM times LEFT JOIN events ON time >= envent_end AND time <= envent_start. 并另外过滤掉未找到匹配项的行:WHERE envent_end IS NULL.