Различные вопросы по PHP и MySQL

101K
.
Добавлено: 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
);
.
Hey guys! Finally I'm gonna change status!?
Eternal, Вложить запрос с max(id)
delete from users where id < (select max(id) from users)
.
kantry, cпасибо!
.
ДоХтор
# 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
);
Прикрепленные файлы:
.
Hey guys! Finally I'm gonna change status!?
Добавлено: 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
В делейте джоины не работают, это не амдейт.
.
Hey guys! Finally I'm gonna change status!?
# ДоХтор (12.03.2019 / 23:17)
kantry, не, не работает такой запрос:
ERROR 1064
Я table для примера написал, с чего он должен работать с ошибкой
.
Hey guys! Finally I'm gonna change status!?
desay, А чем апдейт от делете отличается?
Джоин стандартный синтаксис должен работать на всех версиях, по крайней мере которые не старше меня
Прикрепленные файлы:
Всего: 7969