【问题标题】:INSERT VALUES from another table and ADD NEW VALUES TOO into a table从另一个表插入值并将新值添加到表中
【发布时间】:2011-12-09 11:14:42
【问题描述】:

我正在尝试将值插入一个名为 charterFlight 的表中。我要做的是从另一个表中复制飞机 ID、机组 ID 和客户 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

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

【问题讨论】:

  • 您的所有三个源表中是否真的有值?
  • 请发布您的确切 SQL...
  • 选择是否返回任何行?尝试在没有插入的情况下运行它,因为一般语法对我来说看起来不错。
  • 只有三个表都有值。 {1,2,3} CROSS JOIN {a,b,c} CROSS JOIN {} 仍然只是 {}
  • 如果某些表可能没有记录,则需要对这些表进行外部联接。

标签: sql oracle insert


【解决方案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 中的数字字段也必须与这些字段匹配。

任何不匹配都会导致您提到的错误。


EDIT:回复您的 cmets

尽我所能建议,您将 Aircraft、Crew 和 Customer 的每个组合插入以下...

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 值。


如果您不想要 flight_time, flight_date, destinationNULL 值,那么您只需将 SELECT 的结果复制到 EXCEL 中,然后在 Excel 中编写一个公式来为您生成 inster 语句。


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

【讨论】:

  • 我知道这一点,这就是我面临的问题。我想从另一个表中提取前三个字段的值,并为其余三个字段手动添加值(航班时间、航班日期、目的地)我该怎么做???使用 VALUES 命令???
  • @user1089592 - 这取决于,您是否希望每条记录中的值都相同?如果是这样,只需附加, 'a flight time', 'a flight date', 'a destination'。但是,如果您希望每行有不同的值,您打算从哪里获取这些值?你打算加入另一张桌子来得到它们吗? (注意,此时您;r 对所有表进行 CROSS JOIN,无论值或关系如何,都获得所有可能的组合,这实际上是您想要的吗?)或者您可以只使用 NULL, NULL, NULL 然后返回并更新手动或使用 UPDATE 查询。
  • 不,因为每个航班都有不同的航班时间、航班日期、目的地,并且由不同的客户预订并由不同的机组人员(飞行员)飞行......我正在弥补价值! !!
  • @user1089592 - 然后您需要加入另一个包含这些值的表。或者指定默认值(例如我给出的, NULL, NULL, NULL 示例),然后自己更新或编辑它们。
  • 我该怎么做????我不是通过 SELECT 命令和 FROM 命令加入表吗?
【解决方案2】:

如果是 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";
?>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多