我献丑下:
1.如果用insert into table_name values (field_name1,field_name2,field_name3)这个命令的话,每次只能插入一条记录.
2.insert into table_name1 select field_name1,field_name2 from table_name2 where +条件;用这个命令,可以从已存在的表table_name2中选择多条符合where 条件的记录一次性地插入table_name1表中.
insert into tab_name1(col1,col2,col3...)
select col1,col2,col3...
from tab_name2
where ...;
-------------------------------------------
INSERT ALL
INTO SAL_HISTORY(empno, hire_date, sal) VALUES( empid, hiredate, sal )
INTO MGR_HISTORY(employee_id, mgr, salary) VALUES( empid, mgr, sal )
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
FROM EMPLOYEES
WHERE employee_id > 200;
------------------------------------------
INSERT ALL
WHEN sal > 10000 THEN
INTO SAL_HISTORY(empno, hire_date, sal) VALUES( empid, hiredate, sal )
WHEN mgr > 200 THEN
INTO MGR_HISTORY(employee_id, mgr, salary) VALUES( empid, mgr, sal )
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
FROM EMPLOYEES
WHERE employee_id > 200;
-------------------------------------
INSERT FIRST
WHEN sal > 25000 THEN
INTO SPECIAL_SAL VALUES(deptid, sal)
WHEN HIREDATE LIKE ('%00%') THEN
INTO HIREDATE_HISTORY_00 VALUES(deptid, hiredate)
WHEN HIREDATE LIKE ('%99%') THEN
INTO HIREDATE_HISTORY_99 VALUES(deptid, hiredate)
ELSE
INTO HIREDATE_HISTORY VALUES(deptid, hiredate)
SELECT department_id deptid, SUM(salary) sal, MAX(hire_date) hiredate
FROM EMPLOYEES
GROUP BY department_id;
------------------------------
INSERT ALL
INTO SALES_INFO VALUES( employee_id, week_id, sales_mon)
INTO SALES_INFO VALUES( employee_id, week_id, sales_tue)
INTO SALES_INFO VALUES( employee_id, week_id, sales_wed)
INTO SALES_INFO VALUES( employee_id, week_id, sales_thur)
INTO SALES_INFO VALUES( employee_id, week_id, sales_fri)
SELECT employee_id, week_id, sales_mon, sales_tue, sales_wed, sales_thur, sales_fri
FROM SALES_SOURCE_DATA;
一看就知道是有很多值要插入到一个表里.
最笨的办法
用 insert into tablename (col1,col2,...)
select * from (
select 'a1','a2',... from dual union all
select 'a1','a2',... from dual union all
select 'a1','a2',... from dual union all
...)