2015-10-19 2 views
0

У меня был аналогичный вопрос, но вместо того, чтобы полагаться на код для этого, я хотел бы, чтобы SQL обрабатывал то, что я пытаюсь найти. Мне нужно сначала выбрать последнюю опубликованную запись в «my_table», да, я могу использовать «MAX», чем хотелось бы, если эта запись старше 24 часов на основе сегодняшней даты или «current_date». У вас есть вопросы о том, как объединить эти два.Выберите на основе результата первого оператора выбора SQL

SELECT max(date(date_posted)) FROM my_table 
WHERE ("SELECT count(DISTINCT my_id) AS 'a' 
     FROM my_table 
     WHERE date_posted > date_sub(current_date, INTERVAL 1 DAY) 
) 

Спасибо, что посмотрели!

+1

Вы могли бы предоставить образец данных и ожидаемый результат? – Alex

+0

Я ожидаю «0», если последняя запись в таблице новее 24 часов или «1», если самая новая запись в таблице старше 24 часов. Спасибо! – Andre

ответ

0

Это будет нормально работать.

SELECT max(date(date_posted)) FROM my_table WHERE DATEDIFF(current_date,date_posted) > 1 
+0

Этот вопрос дает мне эту ошибку: «Неизвестный столбец« date_posted »в« having clause »» – Andre

+0

сейчас проверьте .......... –

+0

Теперь, если самая новая запись в таблице - от «2015-10- 20 "ваш SQL возвращается" 2015-10-18 ". – Andre

0

Вам не нужна производная таблица. Из вашего комментария, похоже, вы пытаетесь сделать:

select 
case when max(date(date_posted)) > date_sub(now(), INTERVAL 1 DAY) then 1 else 0 end 
as somecolumn 
from my_table 
+0

Это возвращает «1» поверх результирующего набора, но после этого несколько других записей. – Andre

+0

проверьте, подходит ли модифицированная версия. Ваш вопрос непонятен –

+0

У меня есть еще один вопрос для вас: если последняя запись в таблице была опубликована в «2015-10-19 00:00:06», не должна ли она вернуть «0»? Потому что он новичок, чем 24 часа «сейчас()», верно? – Andre

Смежные вопросы