データベーステーブル内のレコードを挿入または更新

あなたは、次のシナリオが発生します:記録する場合、記録が挿入されている場合は、更新された目標値テーブルに存在しています。

サンプルデータ

- test_source数据源表

CREATE  TABLE `test_source`(
  ` id`のint型11NOT  NULL AUTO_INCREMENT、
  `BWKEY`のVARCHAR255のDEFAULT  NULL 
  ` MATNR` VARCHAR255のDEFAULT  NULL 
  VERPR` ` ダブル2550DEFAULTの NULL PRIMARY  KEY ( `id`)、
   UNIQUE  KEY ` sBWKEY`( `BWKEY`、` MATNR`)
)ENGINE =InnoDBのAUTO_INCREMENT = 7  DEFAULT CHARSET = UTF8 

INSERT  INTO `zjkywms`.`test_source`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES1' 2105 '' A '1 );
INSERT  INTO `zjkywms`.`test_source`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES2' 2105 '' B '2 );
INSERT  INTO`zjkywms`.`test_source`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES3' 2105 '' C '3 );
INSERT  INTO `zjkywms`.`test_source`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES4' 2106 '' A '4 );
INSERT  INTO `zjkywms`.`test_source`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES5' 2106 '' B' 5。);
 INSERT  INTO `zjkywms`.`test_source`(id``、` BWKEY`、MATNR``、 `VERPR`)VALUES6。 ' 2106 ' ' C '6。); 

- test_targetターゲットテーブル/に更新または挿入する

CREATE  TABLEを`test_target`(
  ` id`のint型11NOT  NULL AUTO_INCREMENT、
  `BWKEY` VARCHAR255のDEFAULT  NULL 
  ` MATNR` VARCHAR255DEFAULTの NULL 
  `VERPR` ダブル2550DEFAULTの NULL PRIMARY  KEY (` id`)、
   UNIQUE  KEY `tBWKEY`(` BWKEY`、 `MATNR`)
)ENGINE = InnoDBのAUTO_INCREMENT = 4  のDEFAULT CHARSET = UTF8の

INSERT  INTO zjkywms`.`test_target`( `` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES1' 2105 '' A '7 )。
INSERT  INTO `zjkywms`.`test_target`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES2' 2106 '' C '6 )。
INSERT  INTO `zjkywms`.`test_target`(` id`、 `BWKEY`、` MATNR`、 `VERPR`)VALUES3' 2107 '' Z '9)。

二、更新+ 2段階のプロセスを挿入

- 待更新的记录
SELECT  *  から test_target T  JOIN test_sourceのs  s.BWKEY = t.BWKEY  s.MATNR = t.MATNR。
- 更新test_target T内がtest_source s.BWKEY = t.BWKEYのSとs.MATNR = t.MATNRセットt.VERPR = s.VERPR JOIN 

- 待插入的记录
- VERPR、BWKEY、MATNR(test_target挿入)
 SELECT s.BWKEY、s.MATNR、s.VERPRをから test_sourceだところ ではない が存在するが選択 1  から test_targetさt s.BWKEY= t.BWKEY  s.MATNR = t.MATNR)。

効果

MySQLの>  を選択 *  からtest_target。
+ - - + ------- + ------- + ------- + 
| ID | BWKEY | MATNR | VERPR | 
+ - - + ------- + ------- + ------- + 
|   1  |  2105   | |      1  | 
|   2  |  2106   | C      |      6  | 
|   5  |  2107   | Z      |      9  | 
|   6  |  2105  | B      |      2  | 
|   7  |  2105   | C      |      3  | 
|   8  |  2106   | |      4  | 
|   9  |  2106   | B      |      5  | 
+ - - + ------- + ------- + ------- + 
7 セット0.03秒)

レコードID:1は、元の値が7で、更新記録である6〜9は、記録中に挿入されます。

 

三、オラクルのステップ動作

<保留>

 

図4に示すように、ステップ動作のMySQLの

<保留>

おすすめ

転載: www.cnblogs.com/Tty725/p/11669952.html