我知道可以获取昨天的记录,最常见的方法是使用SUBDATE(CURDATE(), 1)
,或者只是使用CURDATE() - 1
并使用LIMIT
和ORDER
来检索昨天的最后记录。
但是在这里,我需要在第一行获得昨天的最后记录,其余的将是今天的所有记录。我需要在单个查询中运行它。
例如,我的一张表中有以下记录:
--------------------------------------------------
| value | created_at |
--------------------------------------------------
| 70 | 1/1/2017 |
| 300 | 1/1/2017 |
| 100 | 1/1/2017 |
| 235 | 1/2/2017 |
| 45 | 1/2/2017 |
--------------------------------------------------
created_at
列是时间戳,如果今天是2017年1月1日(2017年1月2日),则查询结果应为:
--------------------------------------------------
| value | created_at |
--------------------------------------------------
| 100 | 1/1/2017 |
| 235 | 1/2/2017 |
| 45 | 1/2/2017 |
--------------------------------------------------
到目前为止,我只能通过以下查询检索今天的记录:
SELECT * FROM my_table WHERE created_at >= CURDATE();
我需要什么查询才能完成此任务?
答案 0 :(得分:1)
希望你有id作为主键
select * from
(select
*
from
tbl
where date(created_at) =date(DATE_ADD(now(), INTERVAL -1 DAY))
order by id desc limit 0,1
)tmp
UNION
select * from tbl where date(created_at)=date(now())