[解決済み] MySQL REPLACE INTOのSQL Server 2005での実装は?
2023-04-16 14:15:45
質問
MySQL には、信じられないほど便利でありながら、プロプライエタリな
REPLACE INTO
SQL コマンドがあります。
これは SQL Server 2005 で簡単にエミュレートできますか?
新しいトランザクションを開始し
Select()
を実行し、次に
UPDATE
または
INSERT
そして
COMMIT
は常に少し苦痛です。特にアプリケーションでそれを行う場合、そのため常に2つのバージョンのステートメントを保持します。
私は、簡単で 普遍的な のような機能を SQL Server 2005 に実装する方法はあるでしょうか?
どのように解決するには?
これは、MSSQLについて私を悩ませるものです(
私のブログで暴言
). MSSQLが
upsert
.
@Dillie-O のコードは古い SQL バージョンでは良い方法ですが (+1 票)、それでも基本的には 2 つの IO 操作 (
exists
を実行し、その後
update
または
insert
)
には少し良い方法があります。 この投稿 には、基本的にもう少し良い方法があります。
--try an update
update tablename
set field1 = 'new value',
field2 = 'different value',
...
where idfield = 7
--insert if failed
if @@rowcount = 0 and @@error = 0
insert into tablename
( idfield, field1, field2, ... )
values ( 7, 'value one', 'another value', ... )
これにより、更新であれば1回、挿入であれば2回のIO操作に減らすことができます。
MS Sql2008 で紹介されている
merge
を SQL:2003 標準から導入しています。
merge tablename as target
using (values ('new value', 'different value'))
as source (field1, field2)
on target.idfield = 7
when matched then
update
set field1 = source.field1,
field2 = source.field2,
...
when not matched then
insert ( idfield, field1, field2, ... )
values ( 7, source.field1, source.field2, ... )
これで本当に1つのIOオペレーションになりましたが、ひどいコードです :-(
関連
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] SQL Server の Insert Update ストアド プロシージャ