Добавлено: 12.03.2019 / 20:04
# Eternal (12.03.2019 / 19:52)
ДоХтор, БД
DELETE FROM `activnost`
WHERE `id` IN (
SELECT `id` FROM `activnost`
ORDER BY `id` DESC
LIMIT 5
)
не пускает, пишет что #1235 - Эта версия MariaDB пока еще не поддерживае
Я так-то в базах не знаток, только что погуглил и тоже видел подобное предупреждение. Если так не получается, то наверное за два запроса удалять. Например, извлечь последнюю запись в память
(это если из под PHP делать) из БД, очистить таблицу
(TRUNCATE `table_name`;) и записать запись из памяти обратно в БД.
Добавлено: 12.03.2019 / 20:04
Ещё я видел такие запросы, не знаю, пройдёт ли у тебя:
DELETE FROM `table`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `table`
ORDER BY id DESC
LIMIT 42 -- keep this many records
) foo
);
Eternal, Вложить запрос с max(id)
delete from users where id < (select max(id) from users)
# kantry (12.03.2019 / 20:10)
Eternal, Вложить запрос с max(id)
delete from users where id < (select max(id) from users)
А у меня твой запрос чё-то не сработал, выбросил ошибку:
ERROR 1093 (HY000): You can't specify target table 'files' for update in FROM clause
За то вот этот запрос без проблем удалил все записи, кроме последней:
DELETE FROM `files`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `files`
ORDER BY id DESC
LIMIT 1
) foo
);
Добавлено: 12.03.2019 / 21:58
ДоХтор, Версия mysql старая наверно.
Добавлено: 12.03.2019 / 22:08
Попробуй с джойном?
DELETE t1
FROM table t1
JOIN table t2 ON t2.id < t1.id
# kantry (12.03.2019 / 22:08)
ДоХтор, Версия mysql старая наверно.
Попробуй с джойном?
DELETE t1
FROM table t1
JOIN table t2 ON t2.id < t1.id
Мож проще было бы версию БД посмотреть? А то мне сперва же надо базу наполнить чем то... Есть же запрос в мускуле, наподобие PHP_VERSION ? Или ты не знаешь, с какой версии начинается поддержка подобных sql-запросов?
Добавлено: 12.03.2019 / 23:11
kantry, не, не работает такой запрос:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE t1
Добавлено: 12.03.2019 / 23:17
Есть команда
SELECT version();
+-----------+
| version() |
+-----------+
| 5.7.20 |
+-----------+
# kantry (12.03.2019 / 22:08)
ДоХтор, Версия mysql старая наверно.
Попробуй с джойном?
DELETE t1
FROM table t1
JOIN table t2 ON t2.id < t1.id
В делейте джоины не работают, это не амдейт.
# ДоХтор (12.03.2019 / 23:17)
kantry, не, не работает такой запрос:
ERROR 1064
Я table для примера написал, с чего он должен работать с ошибкой
desay, А чем апдейт от делете отличается?
Джоин стандартный синтаксис должен работать на всех версиях, по крайней мере которые не старше меня