限制Sql plus中单个列上的distinct关键字

限制Sql plus中单个列上的distinct关键字,sql,distinct,sqlplus,unique-key,Sql,Distinct,Sqlplus,Unique Key,我的员工表中的部门id可能包含重复的密钥 但部门ID是主键。 显示错误(ORA-00001:违反了唯一约束(ROHITRAJ.SYS_C0013013)。 上述代码已按如下所示进行了更改,但仍不起作用: INSERT INTO DEPT(Dept_ID, Dept_Name) (SELECT DISTINCT department_id, last_name FROM my_employee); 是否可以将数据插入包含重复项的列中包含唯一键的列?是否可以将数据插入包含重复项的列中包含唯一键的列

我的员工表中的部门id可能包含重复的密钥 但部门ID是主键。

显示错误(ORA-00001:违反了唯一约束(ROHITRAJ.SYS_C0013013)。

上述代码已按如下所示进行了更改,但仍不起作用:

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

是否可以将数据插入包含重复项的列中包含唯一键的列?

是否可以将数据插入包含重复项的列中包含唯一键的列中

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

如果要创建另一列来处理
部门id
,只需在
部门id
上存储自动编号即可

试试这个:

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

注意:(rownum仅适用于Oracle,它表示行号。)

您是否尝试使用员工的姓氏填充部门名称?如果有多行具有相同的
部门id
,但(可能)不同的
姓氏
值,请将distinct关键字限制为一列,应该选择哪个
last\u name
值?您需要明确说明选择这些值的规则-首先是对我们,其次是对您的数据库系统。@knkarthick24我只是在试验,非常愚蠢的命名约定。谢谢您的回复。我不能不使用为一个目的创建的两个列名吗?插入数据而不使用另一列的任何方法,因为我想使Department\u id成为depart\u id的外键。
INSERT INTO DEPT(Dept_ID, Department_id, Dept_Name)
(SELECT rownum, department_id, last_name
FROM my_employee);