如何从select语句中插入表中的信息?

时间:2017-05-03 22:26:53

标签: mysql database python-3.x

我正在使用mysql,我正在尝试将数据插入到不同表中的表中。我搜索过,我发现我需要做这样的事情:

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'; 

这些默认值应该在那里,我已经设置了它们,我注意到为了做这种插入我必须引用每个字段名称但在这种情况下我只想要一条信息从另一张桌子。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

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

这将在row表中添加一个Credit_request,其中carlos的customer_id位于customer_id列,null位于其他列中。

答案 1 :(得分:0)

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

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