若要将值从一个或多个表中取出并添加到另一个表中,您可以在 INSERT 语句中使用 SELECT 子句。SELECT 子句可以将值插入一行中的某些列或所有列中。
仅为某些列插入值这种做法在从现有表中取值时会用得上。然后,可以使用 UPDATE 为其它列添加值。
在为表中的某些列(但不是全部列)插入值之前,对于不插入值的那些列,请确保其存在缺省值,或者为这些列指定 NULL 值。否则,将出现错误。
当将一个表的行插入到另一个表时,这两个表的结构必须兼容—也就是说,匹配的列必须是相同的数据类型或者 SQL Anywhere 可以自动转换的数据类型。
如果两个表中列的顺序相同,则不需要在任何一个表中指定列名。例如,假设有一个名为 NewProducts 的表,其模式与 Products 表相同,并且其中包含一些您想要添加到 Products 表的产品信息行。可以执行以下语句:
INSERT Products SELECT * FROM NewProducts; |
就像使用 VALUES 子句一样,您可以使用 SELECT 语句将数据添加到行中的某些列(但不是所有列)。只需在 INSERT 子句中指定要向其中添加数据的列即可。
您可以根据表中的其它数据将数据插入同一表中。这实质上意味着复制全部或部分行。
例如,您可以根据现有产品将新产品插入 Products 表中。以下语句将新的 "Extra Large" T 恤衫(短背心、V 型领和水手领等样式)添加到 Products 表中。标识号比现有大小的衬衫大 30:
INSERT INTO Products SELECT ID + 30, Name, Description, 'Extra large', Color, 50, UnitPrice, NULL FROM Products WHERE Name = 'Tee Shirt'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |