1

データのセットをデータベースに保存したいのです、それが既存のレコードである場合は、それを変更したいと考えています。それ以外の場合は、新しいものを作成してください。そのための結合ステートメントはありますか?(ググっても何もありませんでした。)

現在、私が持っている最善の方法は、既に存在するかどうかを確認してから、いずれかの操作を実行することです。私には面倒に思えます。

create table Stuff (
  Id int identity(1001, 1) primary key clustered, 
  Beep int unique,
  Boop nvarchar(50))
4

3 に答える 3

3

MYSQL で:

INSERT ... ON DUPLICATE KEY UPDATE を使用できます。

例えば:

INSERT INTO table (a,b,c) VALUES (4,5,6)
  ON DUPLICATE KEY UPDATE c=9;

詳細については、http: //dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.htmlを参照してください。

于 2013-07-08T11:04:05.860 に答える
1

MySQL の使用INSERT... ON DUPLICATE KEYと MSSQL の使用MERGE

MERGEAzure でサポートされており、ステートメントの紹介として、このブログ記事を強くお勧めします。

これは、提供されたスキーマに基づくマージステートメントです...

create table #Stuff (
  Id int identity(1001, 1) primary key clustered, 
  Beep int unique,
  Boop nvarchar(50),
  Baap nvarchar(50)
);

INSERT  INTO #Stuff VALUES (1,'boop', 'poop');
INSERT  INTO #Stuff VALUES (2,'beep', 'peep');

SELECT * FROM #STUFF;

MERGE #Stuff 
   USING (VALUES(1,'BeepBeep','PeepPeep')) AS TheNewThing(A,B,C)
     ON #Stuff.Beep = TheNewThing.A
WHEN MATCHED THEN UPDATE SET #Stuff.Boop = TheNewThing.B, #Stuff.Baap = 'fixed'
WHEN NOT MATCHED THEN INSERT (Beep,Boop,Baap) VALUES (
  TheNewThing.A, TheNewThing.B, TheNewThing.C);

SELECT * FROM #STUFF

また、非常に優れたSO Qを見つけました。これは、さらに読むのに役立つかもしれません

于 2013-07-08T11:24:10.377 に答える
1

はい、pl/sql を使用して簡単に実行できます http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/01_oview.htm#7106

于 2013-07-08T11:03:02.873 に答える