INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
爲插入一個標準的形式,如何插入多行,如果一些數據丟失?
例如
INSERT INTO tbl_name (a,b,c) VALUES(1,'missing','missing'),(4,'missing',6),(7,8,9);
請注意,表可能包含數據而不是「缺失」值,並且不應該用「null」或其他值覆蓋。
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
爲插入一個標準的形式,如何插入多行,如果一些數據丟失?
例如
INSERT INTO tbl_name (a,b,c) VALUES(1,'missing','missing'),(4,'missing',6),(7,8,9);
請注意,表可能包含數據而不是「缺失」值,並且不應該用「null」或其他值覆蓋。
在這種情況下,你可以插入null
而不是missing
:
INSERT INTO tbl_name (a,b,c) VALUES(1,null,null),(4,null,6),(7,8,9);
該解決方案將工作只有當目標字段爲空的,或者如果你想要的行爲,就好像同樣會拋出錯誤
苛刻,我的表可能有數據已經在「缺失」單元格,不應該用null覆蓋。有什麼建議麼? – bbe
首先,你指定什麼:
Note, table may contain data instead for "missing" values, and it should not be overwritten with "null" or else.
在這一點上,如果你只使用「INSERT`語句,那麼它不一樣,如果一些數據在一些已經存在關係形式,因爲'INSERT'語句插入(!)新記錄,不會更新記錄。
更多內容:比方說,您有一個id
列作爲主鍵列。如果您嘗試INSERT
記錄的'id'與現有記錄相同,則會出現錯誤:「Duplicate key ...」。我們假設id
不是主鍵值。然後,當您嘗試INSERT
新記錄的'id'與現有記錄相同時,新記錄將作爲重複插入。
也就是說,您可以使用UPDATE
來更新現有記錄。爲了不覆蓋現有值,您可以在UPDATE
聲明中省略它們。
實施例:表users
與fname
列id
,lname
:
id fname lname
1 John Smith
2 Sam Stevenson
UPDATE
語句:
UPDATE users
SET fname='Helen'
WHERE id = 2;
結果:
id fname lname
1 John Smith
2 Helen Stevenson
插入'null'代替字符串'」丟失'' –
抱歉,遲到,但表格數據可能已經存在,不應該被'null'覆蓋。 – bbe
您的'a'列是主鍵列嗎?它是一個自動增量嗎? – 2017-06-16 12:22:24