[精讚] [會員登入]
10757

Mysql INSERT ... ON DUPLICATE KEY UPDATE 寫法,MYSQL如果存在的修改,不存在就新增的寫法

Mysql有則修改,無則新增的sql寫法

分享此文連結 //n.sfs.tw/10334

分享連結 Mysql INSERT ... ON DUPLICATE KEY UPDATE 寫法,MYSQL如果存在的修改,不存在就新增的寫法@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-08-23 21:29:53 最後編修
2016-11-30 23:34:26 By 張○○
 

我們在處理資料時都知道,當資料不存在時,會新增 INSERT INTO XXX;而在資料已經存在時,會修改 UPDATE XXXX。

事實上,常常我們會不清楚到底資料是否已經存在,所以總是在操作前先SELECT一下是否已存在該筆資料。

這雖然沒問題,但寫程式時會很麻煩。

還好MYSQL提供一個 INSERT ... ON DUPLICATE KEY UPDATE 的寫法,可以一行就解決這樣的難題。

必要條件

  1. 資料表中必須有主鍵或唯一鍵 (PRIMARY or UNIQUE key)

  2. INSERT時須帶入1. 欄位的資料

範例

這裡我引用一個組合主鍵的範例給各位參考。

CREATE TABLE IF NOT EXISTS `gamePlayer` (
  `pNode` char(2) collate utf8_bin NOT NULL,
  `gsn` int(11) NOT NULL,
  `out` smallint(6) NOT NULL,
  `changeColor` tinyint(4) NOT NULL,
  PRIMARY KEY  (`pNode`,`gsn`),
  KEY `gsn` (`gsn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

SQL語法範例

INSERT INTO `gamePlayer` (`pNode`, `gsn`,`out`, `changecolor`) VALUES ('K',4, 100, 1) 
ON DUPLICATE KEY UPDATE `out`=100, `changecolor`=1

上面 pNode 和 gsn 兩個欄位是組合主鍵,所以在insert時一定要帶值進去,如上例中的 'K', 4。(如果只有單一主鍵就更簡單了)

Mysql會自動判斷該主鍵是否重覆,如果重覆就會叫用後面的 UPDATE。

UPDATE直接寫入要修改的其他欄位值即可,主鍵是不能修改的,不需要也不可以加上 WHERE..


原文 2012-05-04 22:40:21

END

你可能感興趣的文章

[Mysql] 修改欄位的自動索引值autoindex (auto_increment ) Mysql 新增、刪除、修改、查看欄位的自動索引值autoindex (auto_increment)

[Mysql/Mariadb] 全文檢索 fulltext index 關於 MySQL 的全文檢索

[mysqldump] Mysqldump時出現記憶體錯誤Out of memory 當進行 mysqldump 時出現 Out of memory (Needed xxxxx bytes) 的錯誤,該如何處理?

[Mysql/MariaDB] 清除及設定 MySQL 的死連接 mysql 伺服器若有太多的連接,無疑的會耗用非常多的資源,若資源耗盡會影響新的連線,勢必要做一些調整

[MYSQL] 設定字串欄位的預設值 新增表格的時候,字串欄位給予預設空值;數字欄位給預設數值;日期欄位給空值。

[Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like [Mysql/MariaDB中使用LOCATE, POSITION, INSTR來取代 like的方法

隨機好文

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

詭異的創業思維 創業的思維中,有多少銀彈,有多少技術,有多少人脈,有多少時間等等,每個都要考慮進去,以熱忱建立的關係脆弱的像蘇打餅乾一樣..

[MAC] 安裝APACHE+PHP OS Darwin OpenIDMac1deAir 15.6.0 Darwin Kernel Version 15.6.

網頁的標頭(head)搜尋引擎和FB最佳化 網頁的標頭(head)搜尋引擎和facebook最佳化