2012-01-04 61 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

相关问题