У меня есть таблица базы данных новостей, в которой есть два вида статей: социальные и официальные (взаимоисключающие).
Что я хотел бы сделать, так это уменьшить количество социальных строк в таблице доконкретный номер, оставляя в покое официальные новостные статьи.
Вот что я до сих пор придумал:
DELETE
FROM News
WHERE _id NOT IN
(SELECT _id
FROM News
WHERE IsOfficialNews=0
ORDER BY Date DESC LIMIT 20
UNION SELECT _id
FROM News
WHERE IsOfficialNews=1)
Однако я получаю сообщение об ошибке ORDER BY clause should come after UNION not before
.Перемещение ORDER BY
в конец внутреннего SELECT
приводит к LIMIT clause should come after UNION not before
.
Я понимаю сообщение об ошибке, но мне интересно, есть ли другой способ выполнить то, что я пытаюсь сделать.Если я переместу предложение LIMIT
в конец внутреннего SELECT
, у меня все равно останется более 20 социальных строк в таблице (поскольку она также будет считать официальные строки).