#sql #rowid
#sql #rowid
Вопрос:
Меня спросили, как получить N-ю строку из таблицы. Но, поскольку в дополнительном требовании указано, что даже после удаления / вставки строк оно должно возвращать ту же строку.
Я подозревал, что есть способ сделать это.
Но, если у вас есть какие-либо идеи, пожалуйста, дайте мне знать. Заранее спасибо.
Комментарии:
1. Можете ли вы показать пример?
Ответ №1:
Не существует такой вещи, как «n-я» строка таблицы. Таблицы SQL представляют собой неупорядоченные наборы. У них нет определенного порядка, если только столбец не указывает порядок. Если у вас есть автоматически увеличивающийся столбец (также называемый «последовательность» или «идентификатор») или столбец с датой создания по умолчанию, вы можете использовать это. Как в:
select t.*
from (select t.*, row_number() over (order by id) as seqnum
from table t
) t
where t = @NTH;
У вас есть этот ярлык «rowid», но не база данных. Вы можете использовать rowid в Oracle и SQLite (и, возможно, в других базах данных). Однако это не обязательно гарантирует определенный порядок.
Комментарии:
1. Во-первых, спасибо за ваш ответ. И я согласен с тем, что не существует определенного порядка, если не используется order by . Но, я думаю, дело в том, есть ли способ получить n-ю строку после удаления и вставки.