限制于单个列在SQL加在my_employee表distinct关键字

问题描述:

INSERT INTO DEPT(Dept_ID, Dept_Name) 
(SELECT DISTINCT department_id, last_name 
FROM my_employee); 

部门标识可以包含重复的键 但DEPT_ID是主键。限制于单个列在SQL加在my_employee表distinct关键字

错误显示(ORA-00001:唯一约束(ROHITRAJ.SYS_C0013013)侵犯)。

上面的代码已被更改,如下图所示,但它仍然不能正常工作:

INSERT INTO DEPT(Dept_ID, Dept_Name) 
(SELECT (DISTINCT department_id), last_name 
FROM my_employee); 

是否有可能将数据插入到一个包含从包含重复列唯一键的列?

+0

你们是不是要填充部门的名称与雇员的姓? – knkarthick24

+0

限制distinct关键字一列[检查此链接](http://stackoverflow.com/questions/732765/limit-distinct-keyword-to-one-column) –

+0

如果存在具有相同的'department_id'多个行,但(可能)不同'last_name'值,*其中*'last_name'值应选择?您需要阐明一个*规则*,通过这些*规则应该选择这些值 - 首先给我们,然后给数据库系统。 –

是否有可能将数据插入到一个包含从包含重复列唯一键的列?

主键字段必须只包含唯一值。如果您尝试在其上插入重复数据,它将引发异常。

如果您想要创建另一列,将处理department_id并只在Dept_ID上存储自动编号。

试试这个:

INSERT INTO DEPT(Dept_ID, Department_id, Dept_Name) 
(SELECT rownum, department_id, last_name 
FROM my_employee); 

注:(ROWNUM仅适用于甲骨文这意味着行号。)

+0

感谢您的回复。如果不使用为一个目的而创建的两个列名称,我能做到吗?任何方式插入数据,而不使用另一列,因为我想使Department_id Dept_ID的外键。 –