为什么时间不在这里工作,但超时正在工作?

问题描述:

为什么数据在整个数据中都是相同的,但超时不是。 超时它引用正确的行,而不是在时间。为什么时间不在这里工作,但超时正在工作?

这里是我的sql查询

SELECT a.emp_id 
    ,d.course_code 
    ,d.start_time 
    ,d.end_time 
    ,(
     SELECT TIME 
     FROM hris_biometrics_attendance 
     WHERE DATE = '2017-06-13' 
      AND (TIME <= d.start_time) 
      AND emp_id = a.emp_id 
      AND floor = d.floor LIMIT 1 
     ) AS time_in 
    ,(
     SELECT TIME 
     FROM hris_biometrics_attendance 
     WHERE DATE = '2017-06-13' 
      AND (TIME >= d.end_time) 
      AND emp_id = a.emp_id 
      AND floor = d.floor LIMIT 1 
     ) AS time_out 
FROM hris_ftl_final_courses a 
    ,hris_ftl_final_courses_details d; 

这里是我的数据库输出:

emp_id | course_code | start_time | end_time | time_in | time_out 
    1 | COURSE1  | 08:00:00 | 09:00:00 | 7:59:33 | 09:05:00 
    1 | COURSE2  | 10:00:00 | 12:00:00 | 7:59:33 | 12:06:00 
    1 | COURSE3  | 13:30:00 | 15:00:00 | 7:59:33 | null 

我想时间在小于START_TIME或等于START_TIME。 我的sql查询不起作用。

我正在使用heidisql。 mariadb

有人可以帮我解决这个问题吗?

+0

有人可以帮助我吗? – Selle

如果没有ORDER BY,优化程序可以按照需要的顺序*传送行。 LIMIT 1为您提供了这个不可预测的排序列表中的第一个。

ORDER BY TIME ASC添加到一个子查询,ORDER BY TIME DESC添加到另一个子查询。