2017-05-03 29 views
0

我是新的工作与MySQL,我试图从不同的表中插入数据到表中。我已经搜查,我发现,我需要做的是这样的:如何从select语句的表中插入信息?

INSERT INTO Customers (CustomerName, City, Country) 
SELECT SupplierName, City, Country FROM Suppliers; 

这些都是表组成:

Credit_request:

Fieldname     DataType 

| request_id    | int(10) unsigned  
| customer_id   | int(11)    
| total_credit_value  | int(11)    
| Credit_request_checked | set('yes','no')  
| does_apply    | enum('yes','no')  
| creation_time   | datetime    

客户:

Fieldname     DataType 

| Customer_id  | int(11) unsigned 
| name    | varchar(70)   
| lastname   | varchar(70)   
| sex    | enum('M','F')  
| personal_id  | varchar(16)   
| phone_number  | varchar(20)   
| email    | varchar(70)   
| birthdate   | date    
| address   | varchar(70)   
| city    | varchar(70)   
| job    | varchar(60)   
| salary   | int(11)    
| registration_date | datetime   

+ ------------------- + ------------------

但是当我尝试,我得到一个语法错误。这是我的代码:

INSERT INTO Credit_request(null,'Carlos',custormer_id 
,default,default, 
default,default,default,default) 
SELECT Customer_id FROM Customers WHERE Customer_name ='Carlos'; 

这些默认值应该在那里,我已经将它们然而,为了做这种插入我不得不引用每个字段的名称,但我注意到这种情况下,我只想从另一张表中获取一条信息。任何帮助,将不胜感激。

回答

0

如果您只想插入多个列,则可以指定这些列名称,其余列将被分配default值。你的脚本是:

INSERT INTO Credit_request(custormer_id) 
SELECT Customer_id FROM Customers WHERE Customer_name ='Carlos'; 

这将增加一个rowCredit_request表卡洛斯在CUSTOMER_ID列的customer_id和null其他列。

+0

嘿@Darshan谢谢,但实际上这两个表是不同的我要让情况更清楚。但是,谢谢你的回答 –

+0

@GraphsRodriguez我已根据有问题的编辑更新了答案。 –

0

你的语法有点混乱。 INSERT语句应声明要插入的列,SELECT语句声明值。对于有默认值的列,可以省略它们。除非另有说明,可空列总是默认为NULL

INSERT INTO Credit_request(
    `customer_id`, 
    `creation_time` 
) SELECT 
    `Customer_id`, 
    NOW() 
FROM `Customers` 
WHERE `Customer_name` ='Carlos'; 
+0

正如您通常在数据库表中插入新行时所设置的那样,我在'creation_time'中放入了NOW()。您可能希望忽略此内容,或者通过参数将其设置在您的调用代码中。 –