2017-01-03 2 views
0

Я знаю, что можно получить вчера записи, наиболее распространенным способом использования 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 является отметкой о времени, если сегодня 1/2/2017 (2Th января 2017 года), то результат запроса должно быть:

-------------------------------------------------- 
| value | created_at       | 
-------------------------------------------------- 
| 100  | 1/1/2017       | 
| 235  | 1/2/2017       | 
| 45  | 1/2/2017       | 
-------------------------------------------------- 

до сих пор я только смог получить записи сегодняшнего дня с помощью следующего запроса:
SELECT * FROM my_table WHERE created_at >= CURDATE();

Какой запрос мне нужно выполнить?

+0

Последняя запись предыдущий день или вчера? когда-нибудь предыдущий день может быть позавчера, когда нет транзакции вчера – sumit

+1

Вы пробовали использовать 'UNION' –

+0

Опубликовать некоторые данные образца и то, что вы пробовали до сих пор – sumit

ответ

0

Надеясь у вас есть идентификатор в качестве первичного ключа

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()) 
Смежные вопросы