#sql
#sql
Вопрос:
У меня есть таблица, в которой все строки уже расположены в нужном порядке. Мне нужно удалить самую последнюю строку из этой таблицы. Как?
Например, я не могу использовать
order by
потому что строки уже расположены в правильном порядке.
Мне нужно что-то вроде
delete bottom(1) from mytable
Комментарии:
1. Как определяется порядок?
2. требуются образцы данных и столбцов таблицы!!
3. В реляционной базе данных нет такого понятия, как «последняя строка таблицы»
4. «строки уже расположены в правильном порядке» <— нет, это не так.
Ответ №1:
Таблицы представляют собой неупорядоченные наборы. В таблице нет упорядочения, поэтому нет «первой» строки и нет «последней» строки. Нет «правильного порядка». Это просто то, как работает SQL.
Чтобы определить «последнюю» строку, вам нужен столбец, который определяет порядок. Часто это будет автоматически увеличиваемый идентификатор, поэтому последняя строка будет иметь наибольший идентификатор.
Если у вас есть такой столбец и вы используете MySQL, вы можете использовать limit
и order by
с delete
:
delete t from <table> t
order by t.id desc
limit 1;
Если у вас нет такого столбца, вам нужно будет определить строку, которую вы хотите удалить, другими способами:
delete t from <table> t
where col1 = ? and col2 = ? and . . .;
Комментарии:
1. Какой продукт СУБД поддерживает
ORDER BY
delete
оператор?2. @a_horse_with_no_name . . . MySQL, по крайней мере. Это странно, я удивлен, что ввел ответ MySQL, когда нет тега MySQL. Обычно я с этим осторожен.
Ответ №2:
Вы можете использовать приведенный ниже SQL-запрос для удаления последней записи,
DELETE FROM MyTable WHERE ID in(SELECT MAX(ID) FROM MyTable)
WHERE
ORDER
Для удаления последней записи необходимо запросить предложение or.
Ответ №3:
Если у вас есть столбец id и установите для него значение автоматического увеличения, вы можете использовать это:
DELETE FROM TABLE_NAME
ORDER BY id DESC LIMIT 1