我想向數據庫表中添加一行,可是若是存在具備相同惟一鍵的行,我想更新該行。 數據庫
例如, spa
insert into table (id, name, age) values(1, "A", 19)
假設惟一鍵是id
,而且在個人數據庫中有一行id = 1
。 在這種狀況下,我想用這些值更新該行。 一般,這會產生錯誤。 若是我使用insert IGNORE
,它將忽略該錯誤,但仍不會更新。 code
嘗試這個: get
INSERT INTO table (id,name,age) VALUES('1','Mohammad','21') ON DUPLICATE KEY UPDATE name='Mohammad',age='21'
it
注意:
在這裏,若是id是主鍵,那麼在首次插入id='1'
每次嘗試插入id='1'
都會更新名稱和年齡,而且之前的名字年齡也會改變。 io
INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;
也不要忘記關注惟一鍵約束。 table
ALTER TABLE `table` ADD UNIQUE `unique_key` ( `id` )
使用SQLite時: 語法
REPLACE into table (id, name, age) values(1, "A", 19)
假設id
是主鍵。 不然,它只會插入另外一行。 請參閱INSERT (SQLite)。 bug
使用批處理插入時,請使用如下語法: 數據
INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22) ON DUPLICATE KEY UPDATE name = VALUES (name), ...
使用INSERT ... ON DUPLICATE KEY UPDATE
查詢:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE name="A", age=19