"StudentTable"のWHERE句を "StudentID"に更新する "StudentTable"に "StudentID"がない場合は、代わりにデータを挿入したいレコードが既に存在するかどうかに応じて更新または挿入
私はこれをどのように行うことができます
"StudentTable"のWHERE句を "StudentID"に更新する "StudentTable"に "StudentID"がない場合は、代わりにデータを挿入したいレコードが既に存在するかどうかに応じて更新または挿入
私はこれをどのように行うことができます
あなたはそれがない場合、レコードは、存在する場合は、最初のチェック更新を実行する、 が存在しない場合は、挿入する必要があることを意味します。ここで
あなたが行く:
IF EXISTS(SELECT * FROM StudentTable WHERE StudentID = @MyID)
BEGIN
--exists perform update
UPDATE StudentTable SET Grade = 'A+' WHERE [email protected]
--other code...
END
ELSE
BEGIN
--record does not exist INSERT it
INSERT INTO StudentTable(MyID, Grade) VALUES (@MyID, 'A+')
--other code...
END
T-SQLでは、コメント指定子はアポストロフィではなく - です。そして、BEGIN/ENDのものはここでは必要ありません。しかし、それは良い答えです。 – hoodaticus
@hoodaticus - 現時点ではvb.netアプリで作業していて、vb.netでコメントしています。残念ながら、begin/endステートメントは、他のステートメントが存在しない場合は不要です。begin/endステートメントを終了するかどうかを判断できるように、他のステートメントがある可能性があります。 – JonH
私はそれがVBの漏れだと思った: – hoodaticus
あなたはマージを使用することができます。?http://www.mssqltips.com/tip.asp?tip=1704
MSDNのドキュメント:http://msdn.microsoft.com/en-us/library/bb510625.aspx
あなたはプレーンSQLでこれを行うたいか、あなたがプログラミング言語のいくつかの種類がありますか? – Dukeatcoding
使用しているSQL Serverのバージョンをタグ付けするか指定してください。*この情報は、あなたの質問に含めるのに常に役立ちます。これを実現する "より安全な"方法がありますが、古いバージョンのSQL Serverを使用している場合は必ずしも有効ではありません。 –
[Atomic UPSERT in SQL Server 2005](http://stackoverflow.com/questions/2522379/atomic-upsert-in-sql-server-2005) –