为什么整个数据中的时间输入数据相同,但超时却没有。 超时时它引用正确的行而不是时间。
这是我的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的
有人可以帮我这个吗?
答案 0 :(得分:0)
如果没有ORDER BY
,优化程序可以按任意顺序免费提供行。 LIMIT 1
为您提供了这个不可预测的有序列表中的第一个。
将ORDER BY TIME ASC
添加到一个子查询,ORDER BY TIME DESC
添加到另一个子查询。