为什么这个时间没有在这里工作但超时工作正常?

时间:2017-06-19 06:48:02

标签: sql mariadb

为什么整个数据中的时间输入数据相同,但超时却没有。 超时时它引用正确的行而不是时间。

这是我的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

我希望time-in小于start_time或等于start_time。 我的SQL查询无效。

我正在使用heidisql。 MariaDB的

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

如果没有ORDER BY,优化程序可以按任意顺序免费提供行。 LIMIT 1为您提供了这个不可预测的有序列表中的第一个。

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