从另一个表中插入值并将新值添加到表中

时间:2011-12-09 11:14:42

标签: sql oracle insert

我正在尝试将值插入名为 charterFlight 的表中。我要做的是从另一个表中复制aircraft_id,crew_id和customer_id 添加/插入剩余的值。

INSERT INTO charterflight 
    (aircraft_id, crew_id, customer_id, flight_time, flight_date,destination)
SELECT 
     aircraft_id, crew_id, customer_id --(and the remaining values here)
FROM aircraft, crew, customer

运行上面的代码不会产生任何错误,但它也不会插入任何行!

2 个答案:

答案 0 :(得分:1)

基于此评论...

@Ollie Error starting at line 1 in command:
INSERT INTO charterflight (aircraft_id, crew_id, customer_id, flight_time, flight_date,destination)
SELECT aircraft_id, crew_id, customer_id
FROM aircraft, crew, customer
Error at Command Line:1 Column:12 Error report: SQL Error: ORA-00947: not enough values 00947. 00000 - "not enough values" *Cause: *Action:

您正在尝试将三个值插入到包含6个字段的表中。

INSERT INTO table (...)中的字段数必须与表中的字段匹配。然后SELECT ... FROM中的数字字段也必须与这些字段匹配。

任何不匹配都会导致您引用的错误。


编辑:回复您的评论

我可以建议您使用以下内容插入飞机,船员和客户的每个组合......

INSERT INTO charterflight (aircraft_id, crew_id, customer_id, flight_time, flight_date, destination)
SELECT aircraft_id, crew_id, customer_id, NULL, NULL, NULL
FROM aircraft, crew, customer

然后您可以另外手动替换NULL值。


如果您不想NULL的{​​{1}}值,那么您只需将SELECT的结果复制到EXCEL中,然后在Excel中编写一个公式,为您制作inster语句。< / p>


除了这两种方法,我还要承认,我实际上并不确定你想要发生什么。

答案 1 :(得分:0)

如果是php,我们可以这样做,

<?php
$var1='';   //some value
$var2='';   //some value
$var3='';   //some value

 $qry = "INSERT INTO charterflight 
    (aircraft_id, crew_id, customer_id, flight_time, flight_date,destination)
SELECT 
     aircraft_id, crew_id, customer_id ,$var1,$var2,$var3
FROM aircraft, crew, customer";
?>

我们可以在所选表的列名之后传递变量以便插入。