在INSERT语句中使用子查询
在Oracle数据库中,你可以在INSERT
语句的INTO
子句中使用子查询来代替表名。例如:
INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id
FROM employees
WHERE department_id = 50)
VALUES (99999, 'Taylor', 'DTAYLOR', TO_DATE('07-JUN-99', 'DD-MON-RR'), 'ST_CLERK', 5000, 50);
该语句会将数据插入到employees
表中,并筛选出department_id = 50
的记录。注意以下要点:
- 字段数量匹配:子查询的选择列表必须与
VALUES
子句的字段列表数量相同。 - 遵循列规则:基表列的所有规则必须按照
INSERT
语句顺序执行。例如,不允许插入重复的employee_id
,也不能省略非空列的值。
使用这种方法可以灵活插入符合特定条件的数据,同时满足数据库的完整性约束。