1. insert into select where语句的写法是可以实现将一个表中的数据插入到另一个表中,并且可以通过where条件来筛选需要插入的数据。2. 具体写法为:先使用INSERT INTO语句指定要插入数据的目标表,然后使用SELECT语句指定要插入的数据来源表,最后使用WHERE子句来筛选需要插入的数据。3. 例如,假设有两个表A和B,我们想要将表A中满足某个条件的数据插入到表B中,可以使用以下语句: INSERT INTO B (column1, column2, ...) SELECT column1, column2, ... FROM A WHERE condition; 其中,column1, column2, ...是目标表B的列名,可以根据需要进行调整;condition是筛选条件,根据具体情况进行设置。 这样就可以将满足条件的数据从表A插入到表B中了。 值得注意的是,插入的数据列数和数据类型必须与目标表的列数和数据类型相匹配,否则会出现错误。
嵌入方式如下。
INSERT INTO target_table (col1, col2, col3)
SELECT col1,
col2,
col3
FROM source_table
WHERE condition;
其中的select可以使用单表,也可以使用多表,分别举例说明如下。
1. select中使用单表查询
下面了演示如何使用insert into select语句,首先创建一个名为sales的表。
CREATE TABLE sales (
customer_id NUMBER,
product_id NUMBER,
order_date DATE NOT NULL,
total NUMBER(9,2) DEFAULT 0 NOT NULL,
PRIMARY KEY(customer_id,
product_id,
order_date)
);
以下语句将orders和order_items表中的销售摘要插入到sales表中,参考以下实现语句 -
INSERT INTO sales(customer_id, product_id, order_date, total)
SELECT customer_id,
product_id,
order_date,
SUM(quantity * unit_price) amount
FROM orders
INNER JOIN order_items USING(order_id)
WHERE status = 'Shipped'
GROUP BY customer_id,
product_id,
order_date;

2. select中使用多表查询
假设只想将2017年的销售摘要数据复制到新表中。 为此,创建一个名为sales_2017的新表,使用Oracle INSERT INTO SELECT和WHERE子句将2017年的销售数据复制到sales_2017表中:
INSERT INTO sales_2017
SELECT customer_id,
product_id,
order_date,
SUM(quantity * unit_price) amount
FROM orders
INNER JOIN order_items USING(order_id)
WHERE status = 'Shipped' AND EXTRACT(year from order_date) = 2017
GROUP BY customer_id,
product_id,
order_date;

如果两表字段相同,则可以直接这样用。
insertintotable_aselect*fromtable_
b如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:
insertintotable_a(field_a1,field_a2,field_a3)selectfield_b1,field_b2,field_b3)fromtable_
b以上语句前提条件是每个字段对应的字段类型相同或可以自动转换。
还没有评论,来说两句吧...