Таблица. Нужно, чтобы если в колонке created_at, прошло 2 дня, до сегодняшней даты, то писалось в колонке status слово 'yes', а иначе 'no'. Я написал свой вариант, но не понимаю, почему он не работает:
insert into test (status)
select if(DATEDIFF(day,(select created_at from test),(select now()))>2,'yes','no');
Исходя из этого рассмотрим Ваш запрос. Вы хотите во время добавления записи обратиться к полю этой записи(которая еще не добавлена кстати) сравнить его с чем-то и в зависимости от результата установить значение другого поля. Похоже на бред, не так ли?
Если нужно в раннее добавленных записях установить значение поля status, то нужно использовать запрос типа UPDATE.
Что то вроде:
UPDATE table_name SET status=‘yes’ WHERE // тут условие с DATEDIFF
Непонятно, почему новичок работает с clickhouse
но в целом просто в любом запросе, где нужно получить статус, просто пишется
if(DATEDIFF(day,(select created_at from test),(select now()))>2,'yes','no')
если это рабочий код.
Если нет, то надо посмотреть правильный синтаксис
Ипатьев, нет, к сожалению, он возвращает Scalar subquery returned more than one row. Думаю, ругается на 2 select:
select if(DATEDIFF(day,(select created_at from test),(select now()))>2,'yes','no')