私は(n-1)
であるSQL Serverの で前々回アイデンティティを取得できる方法を知りたいです。私は@identity-1
を得ることができます。私の問題は、以前のものががを削除されたときに全体の計算が間違っているだろう、です。これで助けてください。SQL Serverの最後のアイデンティティを取得する方法を教えてください。
0
A
答えて
1
あなたがテーブルの最大身元を取得したい場合は、あなたのコラムの最後のIDを取得したい場合、あなたはあなたがして
Select Max(IdentityColumn) from YourTable
を使用する必要があります使用する必要があります
2
テーブルのID列のの次の最大値を見つけようとしているようです。そのためのクエリ:
Select max(identityColumnName) from [tablename] where identityColumnName
not in (select max(identityColumnName) from [tablename])
1
ここで私はbeleiveダミアンが正しいとあなたがする別の方法ですID列の2番目の最後の値を取得することは、おそらく解決策ではありませんので、tterが、実際の問題をdescrib:
SELECT TOP 1 IdentityColumn
FROM
(
SELECT TOP 2 IdentityColumn
FROM YourTable
ORDER BY IdentityColumn DESC
) t
ORDER BY IdentityColumn
1
は、ちょうど最後の識別子の横を取得するには、あなたはまた、TOPとの組み合わせでLAGまたはLEADを使用することができます。これはIDが自動的に入力IDENTITYによってだINTであることを前提としていることを
注意。
IDは、それが最大値は、最後の作成したレコードを与えることを意味するものではありませんソートuniqueidentifier(別名GUID)です。例えば
:同一性を有するテーブルを用い
declare @T table (id int identity(1,1), value varchar(30));
insert into @T (value) values
('A'),('B'),('C'),('D'),('E');
select top 1
lag(id) over (order by id) as BeforeTheLastId
from @T
order by id desc;
select top 1
lead(id) over (order by id desc) as BeforeTheLastId
from @T
order by id desc;
-- But to get the last Id, a max will do
select max(id) as LastId from @T;
ポストscriptum試験: テーブルの現在のIDは、SELECT IDENT_CURRENT('<YourTableName>')
として取得できる
IF OBJECT_ID('tempdb..#tmpTest') IS NOT NULL DROP TABLE #tmpTest;
create table #tmpTest (id int identity(1,1) primary key, value varchar(30), createdOn datetime2 default SYSDATETIME());
insert into #tmpTest (value) values ('A'),('B'),('C'),('D');
declare @MaxIdBeforeInsert int;
select @MaxIdBeforeInsert = max(id) from #tmpTest;
insert into #tmpTest (value) values('E');
select * from #tmpTest;
select
IDENT_CURRENT('tempdb..#tmpTest') as CurrentIdentity,
@@IDENTITY as IdentityVar,
SCOPE_IDENTITY() as ScopeIdentity,
@MaxIdBeforeInsert as MaxIdBeforeInsert;
0
2番目の最大IDを使用するには、次のようにする必要があります。
SELECT ISNULL(IDENT_CURRENT('<YourTableName>'), 1)-1
関連する問題
- 1. SQL Server 2005でストアドプロシージャの結果セットを取得する方法を教えてください。
- 2. ウィンドウバックグラウンドサービスがSQL Serverデータベースにアクセスする方法を教えてください。
- 3. SSLキーの読み取り権限をSQL Serverに与える方法を教えてください。
- 4. SQL Serverでゼロ除算を防ぐ方法を教えてください。
- 5. コントローラのIDを取得する方法を教えてください
- 6. URLを絶対パスで取得する方法を教えてください。
- 7. ロケールで言語名を取得する方法を教えてください。
- 8. クリックした特定のJbuttonの取得方法を教えてください。
- 9. 最初のイメージのみをデータラップする方法を教えてください。
- 10. jsonをjspでRestlet Serverから取得する方法を教えてください。
- 11. 最後のJenkinsジョブのステータスコード(結果)を取得するURLを教えてください。
- 12. tcp/ipソケットから最新のデータを取得する方法を教えてください。
- 13. 最後の10個のデータをテーブルビューでデータベースに保存する方法を教えてください。
- 14. T-SQL PRINTステートメントをSQL Server Profilerトレースに表示する方法を教えてください。
- 15. 個別のSQL Serverデータベースクエリの結果セットをGridViewにロードする方法を教えてください。
- 16. jQueryテーブルソーターを最初に最後の列でソートする方法を教えてください。
- 17. CSVデータのデータ処理速度をSQL Serverに向上させる方法を教えてください。
- 18. SQL Server:Oracleのdense_rankクエリを真似る方法を教えてください。
- 19. EFにSQL Server列をComputedとして認識させる方法を教えてください。
- 20. SQL Serverのカスタム番号からプライマリキーを自動インクリメントする方法を教えてください。
- 21. SQL Server 2012:列ストアインデックスは、一度に複数の列を提供する方法を教えてください。
- 22. SQL Serverでストアドプロシージャとトリガの実行計画を確認する方法を教えてください。
- 23. SQL Server:この削除クエリをより効率的にする方法を教えてください。
- 24. SQL Server 2008のCLRアセンブリの制限事項を教えてください。
- 25. ScrewTurn WikiをSQL Serverを使用するように設定する方法を教えてください。
- 26. cronタスクの設定方法を教えてください。
- 27. ポイントから消える方法を教えてください。
- 28. SQL Serverで日付間隔を保存して検証する方法を教えてください。
- 29. SSMS 2016を使用してSQL Serverに接続する方法を教えてください。
- 30. 統合セキュリティをJDBCドライバで使用してSQL Serverに接続する方法を教えてください。
あなたは解決しようとしていますが、 "最後の1つのアイデンティティ"を得ることは解決策ではありません。対処しようとしている*より広範な*問題を概説できますか? –
あなたのユースケースについては、カピルの答えはマッチだと思います –