У меня есть таблица («комментарии»), полная комментариев, даты, когда они были созданы, и, если они были выдвинуты вперед с помощью кнопки PHP, также указывается дата (в противном случае дата будет «0000-00-00»). «). Я хотел бы, чтобы таблица отображалась как обычно, но чтобы комментарии, которые были «оттолкнуты», были помещены в какое-либо место в таблице с ORDER BY
Дата создания («создано»).
Вот пример того, чего я хотел бы достичь, который включает выталкивание старого комментария (ID: 4) в начало (ПРИМЕЧАНИЕ: в таблице нет идентификаторов-дубликатов, только результат запроса будет дублировать повторные записи, как показано здесь) :
id | comment | created | repushed
---+---------+---------------------+-------------------
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01
23 | recent | 2015-05-22 12:18:23 | 0000-00-00 00:00:00
22 | recent | 2015-05-22 11:15:43 | 0000-00-00 00:00:00
21 | recent | 2015-05-22 10:23:10 | 0000-00-00 00:00:00
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01
Поэтому я пытаюсь использовать UNION
объединить все комментарии с повторными комментариями (поэтому все повторные комментарии будут появиться дублируется после запроса), но затем я хочу обработать дублированные повторные комментарии так, как если бы они были созданы в момент их повторной отправки, поэтому для получения этого эффекта необходимо поменять местами значения дубликатов «созданный» и «повторный», а затем упорядочить по «создан».
SELECT *
FROM comments
WHERE repushed != '0000-00-00 00:00:00'
UNION ALL
SELECT *
FROM comments
ORDER BY created DESC
Конечно, это не работает так, как задумано, так как я не знаю, как поменять значения двух столбцов.
Работая с тем, что у вас уже есть, попробуйте это:
SELECT id,comment,repushed as created,repushed
FROM comments
WHERE repushed != '0000-00-00 00:00:00' group by id
UNION ALL
SELECT *
FROM comments group by id ORDER BY created DESC
Это переименует столбец, отправленный в созданный
Других решений пока нет …