Есть таблица с разными данными включая поле starts(datetime).
Мне нужна такая сортировка что:
если starts > NOW() тогда order by starts ASC
и если starts < NOW() тогда order by starts DESC
На данный момент я пользуюсь тем что в php делаю два запроса и объединяю их.
Может есть какое нибудь решения который позволит сделать в один запрос?
Мои запросы:
select * from table where starts > now() order by starts ASC
select * from table where starts < now() order by starts DESC
И объединяю две это результаты в php array_merge($query, $query2)
В этом случае я не могу систему страниц данных и разбить результат в несколько страниц
Многие тут советуют использовать сортировку с дополнительный полем типа if(starts > NOW(), 1, -1) AS 'sort'
и в конце order by sort DESC
Я уже пробовал такое но я получу плохую сортировку например:
id | starts
1 | 03,11,2017
2 | 04,11,2017
3 | 02,11,2017
4 | 02,09,2017
5 | 04,09,2017
6 | 03,09,2017
Обратите внимание на даты, прошедшие даты конечно оказались внизу но они не отсортированы по убыванию. А предстоящие даты не отсортированы по возрастанию
ORDER BY starts > now() /* ASC or DESC */,
CASE WHEN starts > now() THEN 0 + starts
ELSE 0 - starts
END ASC
select *
from table
order by if(starts > now(), 1, -1) * to_seconds(starts)
Хотя если следовать логике, что сначала должны быть именно те, что больше по возрастанию, а потом остальные по убыванию, то сортировка скорее такая:
order by (starts <= now()), if(starts > now(), 1, -1) * to_seconds(starts)
SELECT
starts,
CASE
WHEN starts > NOW() THEN -1 * UNIX_TIMESTAMP(starts)
WHEN starts <= NOW() THEN UNIX_TIMESTAMP(starts) END as sort
FROM
table
ORDER BY sort DESC;
Виртуальный выделенный сервер (VDS) становится отличным выбором
как можна с помощю php проверить существует ли файл по url например: если файл http://minionomaniyaru/wp-content/uploads/2016/01/%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD
Есть дваtxt файла, в каждом по 3000 строк, следующего содержания:
Нужно обновить все поля mark на 0, кроме $checkboxId (5,6 и тд которые приходят)<> работает только с 1 числом