在单个查询

时间:2017-01-03 04:02:24

标签: mysql sql

我知道可以获取昨天的记录,最常见的方法是使用SUBDATE(CURDATE(), 1),或者只是使用CURDATE() - 1并使用LIMITORDER来检索昨天的最后记录。

但是在这里,我需要在第一行获得昨天的最后记录,其余的将是今天的所有记录。我需要在单个查询中运行它。

例如,我的一张表中有以下记录:

--------------------------------------------------
| 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();

我需要什么查询才能完成此任务?

1 个答案:

答案 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())