В SQL Server 2008 и выше каков лучший/самый безопасный/больше всего корректный путь
Самым безопасным способом будет вывод или возврат scope_identity () внутри процедуры, вставляющей строку, а затем получение строки на основе этого идентификатора. Следует избегать использования @@ Identity, поскольку вы можете получить неверный идентификатор, когда задействованы триггеры.
Любая методика запроса максимального значения / топ-1 страдает от состояния гонки, когда 2 человека, добавляющие одновременно, затем получат тот же идентификатор обратно, когда они будут искать наивысший идентификатор.
SELECT IDENT_CURRENT('Table')
Вы можете использовать один из этого примера:
SELECT * FROM Table
WHERE ID = (
SELECT IDENT_CURRENT('Table'))
SELECT * FROM Table
WHERE ID = (
SELECT MAX(ID) FROM Table)
SELECT TOP 1 * FROM Table
ORDER BY ID DESC
Но первый будет более эффективным, потому что сканирование индекса не требуется (если у вас есть индекс по столбцу Id).
Второе решение эквивалентно третьему (им обоим нужно сканировать таблицу, чтобы получить максимальный идентификатор).
Еще один способ -
select * from <table> where id=(select max(id) from <table>)
Также вы можете проверить по этой ссылке -
А если вы имеете в виду выбрать ID последней вставленной записи, то
SELECT @@IDENTITY FROM table