限制于单个列在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);
是否有可能将数据插入到一个包含从包含重复列唯一键的列?
答
是否有可能将数据插入到一个包含从包含重复列唯一键的列?
你主键字段必须只包含唯一值。如果您尝试在其上插入重复数据,它将引发异常。
如果您想要创建另一列,将处理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的外键。 –
你们是不是要填充部门的名称与雇员的姓? – knkarthick24
限制distinct关键字一列[检查此链接](http://stackoverflow.com/questions/732765/limit-distinct-keyword-to-one-column) –
如果存在具有相同的'department_id'多个行,但(可能)不同'last_name'值,*其中*'last_name'值应选择?您需要阐明一个*规则*,通过这些*规则应该选择这些值 - 首先给我们,然后给数据库系统。 –