萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> INSERT INTO .. ON DUPLICATE KEY 語法與實例教程

INSERT INTO .. ON DUPLICATE KEY 語法與實例教程

INSERT語句末尾指定了ON DUPLICATE KEY UPDATE,並且插入行後會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行舊行UPDATE;如果不會導致唯一值列重復的問題,則插入新行。例如,如果列a被定義為UNIQUE,並且包含值1,則以下兩個語句具有相同的效果:

insert語句末尾指定了on duplicate key update,並且插入行後會導致在一個unique索引或primary key中出現重復值,則執行舊行update;如果不會導致唯一值列重復的問題,則插入新行。例如,如果列a被定義為unique,並且包含值1,則以下兩個語句具有相同的效果:

 

insert into table (a,b,c)
values (1,2,3) on duplicate key update c=c+1;

update table set c=c+1 where a=1;


如果insert多行記錄, on duplicate key update後面字段的值怎麼指定?要知道一條insert語句中只能有一個on duplicate key update

 

insert into table (a,b,c) values
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2),
on duplicate key update b=values(b);

insert into table (a,b,c) values
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2),
on duplicate key update b=values(b);

insert [low_priority | delayed | high_priority] [ignore]    [into] tbl_name [(col_name,...)]    values ({expr | default},...),(...),...    [ on duplicate key update col_name=expr, ... ]或:

insert [low_priority | delayed | high_priority] [ignore]    [into] tbl_name    set col_name={expr | default}, ...    [ on duplicate key update col_name=expr, ... ]或:

insert [low_priority | high_priority] [ignore]    [into] tbl_name [(col_name,...)]    select ...    [ on duplicate key update col_name=expr, ... ]insert用於向一個已有的表中插入新行。insert...values和insert...set形式的語句根據明確指定的值插入行。insert...select形式的語句插入從其它表中選出的行。在13.2.4.1節,“insert ... select語法”中對insert...select進行了進一步的討論。

行應被插入到tbl_name表中。可以按以下方法指定列。本語句向這些列提供值。

·         列名稱清單或set子句明確的指示了列。

·         如果您不為insert...values或insert...select指定列的清單,則表中每列的值必須在values清單中提供,或由select提供。如果您不知道表中各列的順序,則使用describe tbl_name查詢。

列值可以采用多種方法給定:

 

copyright © 萬盛學電腦網 all rights reserved