我有一个表员工,我想根据日期选择一行。
emp_id validation_user entry_date
-------------------------------------------------------
10 mark 2014-05-01 11:11:00
10 ann 2014-05-01 10:14:00
10 marco 2014-05-01 11:07:00
10 mark 2014-05-01 10:00:00
我想在emp_id = 10且entry_date小于2014-05-01 11:11:00时获得该行 这应该只返回一行,最接近2014-05-01 11:11:00而不是三行
emp_id validation_user entry_date
-------------------------------------------------------
10 marco 2014-05-01 11:07:00
我的select语句返回3行:
SELECT *
FROM emp
where entry_date < "2014-05-01 11:11:00"
答案 0 :(得分:2)
由于MySQL中没有row_number,您可以通过以下方式实现限制和排序:
SELECT *
FROM emp
where entry_date < "2014-05-01 11:11:00"
order by entry_date desc
limit 1
我们在这里做的是通过entry_date命令确保第一行真的是我们想要的第一行,然后我们指定将查询限制为1值。
我们指定按降序排序,因为我们希望最低值低于指定日期。