Самый надежный способ получить последний идентификатор записи из таблицы
В SQL Server 2008 и выше, что является лучшим/безопасным/наиболее правильным способом
- чтобы получить идентификатор (на основе первичного ключа автоинкремента) из таблицы базы данных?
- для получения значения последней строки какого-либо другого столбца (например, SELECT TOP 1 FROM Table ORDER BY DESC)?
Ответы
Ответ 1
Самым надежным способом будет вывод или возврат scope_identity() в процедуре, вставляющей строку, а затем извлечение строки на основе этого идентификатора. Использование @@Identity следует избегать, так как вы можете получить неправильный идентификатор, когда триггеры находятся в игре.
Любая техническая просьба о максимальном значении /top 1 страдает от состояния гонки, когда 2 человека, добавляя в то же время, будут получать одинаковый идентификатор, когда они будут искать самый высокий идентификатор.
Ответ 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).
Второе решение эквивалентно третьему (им обоим нужно отсканировать таблицу, чтобы получить максимальный идентификатор).
Ответ 3
1. SELECT MAX(Id) FROM Table
Ответ 4
Ты можешь попробовать:
SELECT id FROM your_table WHERE id = (SELECT MAX(id) FROM your_table)
Где id
является первичным ключом your_table
Ответ 5
Я думаю, что этот тоже будет работать:
SELECT * FROM ORDER BY id DESC LIMIT 0, 1
Ответ 6
Еще один способ -
select * from <table> where id=(select max(id) from <table>)
Также вы можете проверить эту ссылку -
http://msdn.microsoft.com/en-us/library/ms175098.aspx
Ответ 7
И если вы имеете в виду выбор идентификатора последней вставленной записи, ее
SELECT @@IDENTITY FROM table