Mysql 案例。@Salman感谢您的编辑。我希望在某个时候也能在你的收件箱里留下一些绿色的快乐。如果没有它很重要,我就不会得到想要的结果,因为可能会有一些员工忙了一整天,用户搜索14:00和15:00,在这种情况下,他也会得到那些忙了一整天的员工。“我不想要任何忙

Mysql 案例。@Salman感谢您的编辑。我希望在某个时候也能在你的收件箱里留下一些绿色的快乐。如果没有它很重要,我就不会得到想要的结果,因为可能会有一些员工忙了一整天,用户搜索14:00和15:00,在这种情况下,他也会得到那些忙了一整天的员工。“我不想要任何忙,mysql,sql,Mysql,Sql,案例。@Salman感谢您的编辑。我希望在某个时候也能在你的收件箱里留下一些绿色的快乐。如果没有它很重要,我就不会得到想要的结果,因为可能会有一些员工忙了一整天,用户搜索14:00和15:00,在这种情况下,他也会得到那些忙了一整天的员工。“我不想要任何忙碌的员工。”赛义德说。它是防弹的。@SalmanA它可能是防弹的,但不是防空的。如果,permaybhaps,一个空时间被用来表示一天内的无限期,起始和结束空都表示一天,那么它失败了(结束时间为空或结束时间>='14:00'),并且(start



案例。@Salman感谢您的编辑。我希望在某个时候也能在你的收件箱里留下一些绿色的快乐。如果没有它很重要,我就不会得到想要的结果,因为可能会有一些员工忙了一整天,用户搜索14:00和15:00,在这种情况下,他也会得到那些忙了一整天的员工。“我不想要任何忙碌的员工。”赛义德说。它是防弹的。@SalmanA它可能是防弹的,但不是防空的。如果,permaybhaps,一个空时间被用来表示一天内的无限期,起始和结束空都表示一天,那么它失败了<代码>(结束时间为空或结束时间>='14:00'),并且(start_time为空或start_time@SayedMohdAli此答案的特点是检查日程冲突的标准方法。检查操作符,它基本上说约会是否在开始时间之后结束,在结束时间之前开始?这给出了与IF相同的逻辑magic@Salman谢谢你的编辑。我希望也能留下一些绿色的包裹在某个时刻,你的收件箱中会有快乐。如果没有它,这很重要。我将无法得到想要的结果。使用IF是因为可能会有一些员工忙了一整天,用户搜索14:00和15:00,在这种情况下,他也会得到那些忙了一整天的员工。我不想要任何忙的员工。@Sayed nah。这是bullet p屋顶。@SalmanA它可能是防弹的,但不是防空的。如果permaybehaps使用空时间表示一天内的无限期,开始和结束空都表示一天,那么它将失败。
(结束时间为空或结束时间>='14:00')(start_time为空或start_time@SayedMohdAli此答案的特点是检查日程冲突的标准方法。检查操作符,它基本上说约会是否在开始时间之后结束,在结束时间之前开始?如果magicI没有看到此查询如何查找员工,则给出相同的逻辑。您需要类似于SELECT的内容来自不存在的员工(该员工在下午2点和3点忙碌的时间表)@salman我正在查找在用户搜索的时间范围内没有任何约会的员工。只是您说您需要员工,但您正在返回计划。但我假设计划表有类似于员工id的内容。因此,您可以将其与员工一起加入到表中。并且可能在员工id上分组(或者叫什么名字)。是的,schedule表有employee_id,我也在使用join with employee表查找员工数据。但这部分查询只是为了获取在搜索时间内没有任何约会的员工的员工id。此外,我正在将我的查询与另一个查询合并,该查询只是查找员工w的员工id约会表中不存在ho,这意味着他们也没有任何约会。顺便说一句,范围在“13:00”和“16:00”之间的日程安排是否也被视为在“14:00”和“15:00”之间忙碌?我看不出此查询如何查找员工。在不存在的情况下,您需要类似于“从员工中选择”的内容(该员工在下午2点和3点忙的时间表)@salman我正在查找在用户搜索的时间范围内没有任何约会的员工。只是您说您需要员工,但您正在返回计划。但我假设计划表有类似于员工id的内容。因此,您可以将其与员工一起加入到表中。并且可能在员工id上分组(或者叫什么名字)。是的,schedule表有employee_id,我也在使用join with employee表查找员工数据。但这部分查询只是为了获取在搜索时间内没有任何约会的员工的员工id。此外,我正在将我的查询与另一个查询合并,该查询只是查找员工w的员工id约会表中不存在ho,这意味着他们也没有任何约会。顺便说一句,在'13:00'和'16:00'之间的日程安排是否也被认为在'14:00'和'15:00'之间繁忙?不存在比不存在快?@SayedMohdAli我在各种讨论中看到过这种说法,但我可能从未经历过任何不同因为我没有太多的数据。如果查询速度很快,那么就不要更改它,使用
而不是
,代码会更清晰。约会id是主键,你说的索引是什么意思?如果约会id是主键,那么它就被索引了。请看以下索引:tim answer是对的,他让我的逻辑简单了,没有IFNOT“存在比不存在快吗?”SayedMohdAli说,我在各种讨论中看到过这种说法,但我从未体验过任何区别,可能是因为我没有太多的数据。如果查询速度快,那么不要更改它,使用
而不是
,代码会更清晰。约会id是一个主键,你所说的索引是什么意思?如果约会id是主键,那么它会被索引。请参阅以下索引:tim answer是对的,他让我的逻辑变得简单,没有If
 SELECT * 
   FROM `schedule` 
  WHERE appointment_id NOT IN (
          SELECT appointment_id 
            FROM `schedule` 
           WHERE ( IF(start_time < '14:00', '14:00', start_time) >= '14:00' 
             AND   IF(end_time > '15:00', '15:00', end_time) >= '14:00') 
             AND  (IF(start_time < '14:00', '14:00', start_time) <= '15:00' 
             AND   IF(end_time > '15:00', '15:00', end_time) <= '15:00') 
             AND  `appoint_date` = '2018-11-30')
SELECT * 
FROM schedule 
WHERE appointment_id NOT IN (
    SELECT appointment_id 
    FROM schedule
    WHERE
        end_time     >= '14:00' AND -- this
        start_time   <= '15:00' AND -- and this tests for all possible cases of overlap
        appoint_date = '2018-11-30');
IF (start_time < '14:00', '14:00', start_time) >= '14:00'
SELECT DISTINCT employee_id
FROM `schedule` s
WHERE `appoint_date` = '2018-11-30'
  AND NOT EXISTS (
        SELECT 1
        FROM `schedule` s2
        WHERE s2.`appoint_date` = '2018-11-30'
          AND s2.start_time < '15:00'
          AND s2.end_time > '14:00'
          AND s2.appointment_id = s.appointment_id
      );
 select * from schedule t where not exists
  (select 1 from schedule t1 where 
  t1.appointment_id=t.appointment_id and
  start_time>='14:00' and end_time<='15:00' and appoint_date` = '2018-11-30'
  from )
WHERE (IF(start_time < '14:00', '14:00', start_time) BETWEEN '14:00' AND '15:00')
  AND (IF(end_time > '15:00', '15:00', end_time) BETWEEN '14:00' AND '15:00') 
  AND  (`appoint_date` = '2018-11-30')
WHERE IF(start_time < '14:00', '14:00', start_time) >= '14:00' /** Line 1 */
  AND IF(end_time > '15:00', '15:00', end_time) >= '14:00' /** Line 2 */
  AND IF(start_time < '14:00', '14:00', start_time) <= '15:00' /** Line 3 */
  AND IF(end_time > '15:00', '15:00', end_time) <= '15:00' /** Line 4 */
  AND `appoint_date` = '2018-11-30'
WHERE start_time IS NOT NULL /** Line 1 */
  AND end_time >= '14:00' /** Line 2 */
  AND start_time <= '15:00' /** Line 3 */
  AND end_time IS NOT NULL /** Line 4 */
  AND `appoint_date` = '2018-11-30'
WHERE end_time >= '14:00' 
  AND start_time <= '15:00'
  AND appoint_date = '2018-11-30'