INSERT INTO 或 UPDATE有兩個條件
問題描述:
用戶遇到耗時的挑戰:如果還沒有匹配的行,則將新行插入表中兩個特定條件(「名稱」和「日期」),或如果找到符合則更新現有行。
解決方案:
答案在於 MySQL 的 INSERT INTO ... ON DUPLICATE KEY UPDATE 語法。這項強大的功能允許透過在不存在匹配行時插入新行或在違反唯一鍵約束時更新現有行來實現高效的資料操作。
要實現所需的行為,表必須具有唯一鍵為兩列(「名稱」和「日期」)定義(在本例中為複合鍵)。此鍵用作表中唯一行的識別碼。
範例場景:
考慮以下表格結構:
create table myThing ( id int auto_increment primary key, name int not null, values1 int not null, values2 int not null, dates date not null, unique key(name,dates) -- This line is crucial );
插入具有以下語句的新行將建立一個新行或更新現有行,取決於是否存在具有相同行的行'name' 和'dates':
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
範例結果:
select * from myThing; +----+------+---------+---------+------------+ | id | name | values1 | values2 | dates | +----+------+---------+---------+------------+ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | +----+------+---------+---------+------------+
如範例所示,INSERT INTO ... ON DUPLICATE KEY UPDATE語法根據定義的唯一鍵有效地處理插入和更新操作,消除了對複雜預存程序的需求。
以上是如何根據兩個條件高效插入或更新 MySQL 行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!