Ответ 1
запрос удаления разрешает только модификаторы после команды DELETE, чтобы сообщить базе данных, что/как обрабатывать вещи.
см. эта страница
Я собрал тестовую таблицу для ошибки, с которой я недавно столкнулся. Это связано с использованием LIMIT при попытке удалить одну запись из таблицы MySQL.
Ошибка, о которой я говорю, " У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с" LIMIT 1 "в строке 1"
Таблица, которую я собрал, называется test; он имеет 3 столбца, id, имя и создан. Я заполнил таблицу несколькими записями, а затем попытался удалить ее. Ниже приведено выражение, которое я использовал, чтобы попытаться выполнить это.
DELETE t FROM test t WHERE t.name = 'foo' LIMIT 1
Без использования LIMIT 1 оператор выполняется просто отлично, но, конечно, я бы не использовал LIMIT, если бы не было необходимости в нем.
Я полностью понимаю, что я могу использовать другое выражение для успешного выполнения этого DELETE. Смотри ниже:
DELETE FROM test WHERE name = 'foo' LIMIT 1
Однако мой вопрос сосредоточен на том, почему первое утверждение не работает с LIMIT.
Итак, мой вопрос в том, что я сделал неправильно в отношении первого оператора для создания этой ошибки?
запрос удаления разрешает только модификаторы после команды DELETE, чтобы сообщить базе данных, что/как обрабатывать вещи.
см. эта страница
просто используйте
DELETE FROM test WHERE 1= 1 LIMIT 10
DELETE t.* FROM test t WHERE t.name = 'foo' LIMIT 1
@Andre Если я понял, о чем вы спрашиваете, я думаю, что единственное, чего не хватает, это t. * before FROM
.
Используйте row_count - your_desired_offset
Итак, если у нас было 10 строк и мы хотим смещать 3
10 - 3 = 7
Теперь запрос delete from table where this = that order asc limit 7
содержит последние 3 и order desc
, чтобы сохранить первые 3:
$row_count - $offset = $limit
Delete from table where entry = criteria order by ts asc limit $limit