SQL получает N-ю строку, после удаления продолжает получать ту же строку

#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-ю строку после удаления и вставки.