2012-01-04 64 views
0

我想基於另一個表(table2)插入數據到一個表(table1),唯一的問題是table1包含設置爲不允許空值的字段。我是否需要在table2中創建這些字段,並從中提取數據並填充它們?MySQL從另一個表中插入字段不爲空

例不空字段:密碼

如果我不包括這在我的查詢,然後我得到一個錯誤,如果我創建表2中的字段中的記錄不但是插入,然後插入我的查詢,它工作正常。這似乎有點不尋常。下面的實施例的查詢:

實施例1(表2中沒有密碼字段):

$insert_new_records_query = "INSERT INTO table1 (first_name, last_name, email_address) ". 
"SELECT firstname, lastname, email FROM table2"; 

這產生一個錯誤說,我必須包括密碼字段。

實施例2(表2中的密碼字段):

$insert_new_records_query = "INSERT INTO table1 (first_name, last_name, password, 
email_address) ". 
"SELECT firstname, lastname, password = 'password1', email FROM table2"; 

這允許記錄被創建。問題是我有更多的字段在表1中不爲空,我不認爲我需要在表2中將它們創建爲空白字段,並將它們插入到查詢中,並使用值創建記錄。有一個更好的方法嗎?

+0

您是否可以修改table1中的「not null」字段以允許空值? – 2012-01-04 16:06:47

+0

你想用這個設置完成什麼? – thomaux 2012-01-04 16:06:59

+0

@ZackMacomber,如果這些字段允許空值,那麼這些約束就不會在那裏。除非OP無法控制第一張課程表,但我們缺乏這樣的信息 – thomaux 2012-01-04 16:08:36

回答

1

您不必創建字段,只需「選擇」默認值即可。試試這個:

INSERT INTO table1 (first_name, last_name, password, email_address) 
    SELECT firstname, lastname, 'password1', email FROM table2 
+0

此外,您不希望將密碼保存爲純文本,您應該使用「SELECT firstname,姓,密碼('password1'),電子郵件從表2「。 http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html#function_password – 2012-01-04 16:47:31

+0

哇!感謝迅速回復的人,這很快。道歉,如果我沒有澄清,但我確實需要用值填充表中的非空字段,但我認爲它需要做的方式是在表2中創建所有這些加法字段,以便可以在我的查詢中選擇它們。感謝@a_sad_dude您的回覆似乎適用於我......並且表2中沒有其他表格字段! – 2012-01-04 16:47:47

+0

很高興聽到這一點。不要忘記接受答案) – 2012-01-04 17:11:30

相關問題