2017-06-16 56 views
2

鑑於MySQL的插入多行一些價值觀缺失

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」或其他值覆蓋。

+2

插入'null'代替字符串'」丟失'' –

+0

抱歉,遲到,但表格數據可能已經存在,不應該被'null'覆蓋。 – bbe

+0

您的'a'列是主鍵列嗎?它是一個自動增量嗎? – 2017-06-16 12:22:24

回答

0

在這種情況下,你可以插入null而不是missing

INSERT INTO tbl_name (a,b,c) VALUES(1,null,null),(4,null,6),(7,8,9); 

該解決方案將工作只有當目標字段爲空的,或者如果你想要的行爲,就好像同樣會拋出錯誤

+0

苛刻,我的表可能有數據已經​​在「缺失」單元格,不應該用null覆蓋。有什麼建議麼? – bbe

1

列在插入使用default中省略:

INSERT INTO tbl VALUES (1,default,default),(4,default,6)... 

如果您想要空值只是你SE null

INSERT INTO tbl VALUES (1,null,null),(4,null,6)... 
+0

Vatev,插入默認值生成錯誤: 常規錯誤:1366第1行的列'open_close_children'的整數值不正確:'default'。 可能是什麼原因? – bbe

+0

你是否把引號放在'default'(''default'')?如果是這樣 - 刪除它們。 – Vatev

0

首先,你指定什麼:

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聲明中省略它們。

實施例:表usersfnameidlname

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