oracle中insert语句怎么嵌入select

oracle中insert语句怎么嵌入select

嵌入方式如下。

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