2011-01-27 25 views
5

ここに私の問題があります:empと呼ばれるSQL Serverデータベースがあります。それはemployeeテーブル(userid intカラムを持つ)を持っています。増分userid値+1でemployeeテーブルのuseridの最後のレコードを取得する必要があります。現時点では、私は自分のGUIでそれを行いました。だから私はそれのためのSQLクエリを書くのですか?SQL Serverテーブルの最後のレコードを取得します

答えて

1

ユーザーID列を手動で増分する必要はありません。代わりにIDENTITY列を使用してください。それは自動的に新しい行ごとに1を追加します。

CREATE TABLE Employees (
    UserId INT IDENTITY PRIMARY KEY NOT NULL, 
    UserName NVARCHAR(255) NOT NULL, 
    // etc add other columns here 
) 

あなたが本当にそれは非常に単純なクエリである最高のユーザーIDを選択する必要がある場合:

SELECT MAX(UserId) + 1 
FROM Employees 

[編集]

ご意見をもとに、あなたはSELECT MAX(UserId) + 1 FROM Employeesクエリを使用する必要があります。しかし、これは番号がIDになることを保証するものではないことに注意してください。通常、レコードがデータベースに保存されるまで、Id値は表示されません。最高のユーザーIDを持つレコードを返すために

+0

私のrequiremntはthis.my guiが新しいemloyee.soというフォームを持っているJK.butあなたの迅速なJK.butに感謝あなたがemp table.whenからのユーザーIDを表示するテキストfeildがあります新しい従業員は、そのテストvalをemp id + 1の最後の値として表示します。 –

+1

従業員を実際に追加する前に新入社員のIDを表示する必要がある場合は、上記のクエリ「SELECT MAX(UserId)+ 1 FROM Employees'」を使用します。しかし、新しい従業員が実際に救われたときにId番号ではないチャンスがあります。 –

2

、あなたが行うことができます:

SELECT TOP 1 userid 
FROM employee 
ORDER BY userid DESC 

か...

SELECT MAX(userid) 
FROM employee 

あなたの計画は、手動でユーザーIDをインクリメントし、新しいを挿入する場合その新しいIDで記録しておくと、これを行うことをお勧めします.2つのプロセスが同時にそのプロセスを実行しようとするとどうなりますか?代わりに、IDENTITY列をユーザーIDとして使用して、自動的に増分を処理してください。

-1

ID列がない場合は、最後に挿入されたレコードが表示されます。

EXECUTE ('DECLARE GETLAST CURSOR DYNAMIC FOR SELECT * FROM [User]') 
OPEN GETLAST 
FETCH LAST FROM GETLAST 
CLOSE GETLAST 
DEALLOCATE GETLAST 

IDを設定している場合は、以下を使用できます。

SELECT top(1) ID from [YourTable] order by ID desc 
+0

問題スロービートすべてのためにありがとうございました –

+0

この状況で**本当に**カーソル(大きな大きなパフォーマンスキラー!!)の必要はありません..... –

+0

これは、オートインクリメントとしてのIDはありません。テーブルを置き換えてみて、結果を確認してください –

-1

保存する前に新しいユーザーIDを取得するには、NextIdテーブルを作成します。

ユーザーを挿入する前に、NEXTIDから新しい値を取得する:

UserId = SELECT Coalesce(NextId, 0) + 1 from NextId 

その後NEXTIDテーブル更新:

UPDATE NEXTID SET NextId = IserID 

をそしてあなたのユーザー作成コードでその値を使用

あなたはギャップを得ることができます、それらを避けるためにもっと複雑な方法があります。しかし、私はこれを行うと思います

+0

コード、XMLまたはデータサンプルを投稿する場合は、**これらの行をテキストエディタで強調表示し、エディタツールバーの「コードサンプル」ボタン({})を使用して、フォーマットや構文を強調表示します。 –

+0

これがマイナス1の理由ですか? – Karel

関連する問題