2016-01-27 29 views
0
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'值應選擇?您需要闡明一個*規則*,通過這些*規則應該選擇這些值 - 首先給我們,然後給數據庫系統。 –

回答

0

是否有可能將數據插入到一個包含從包含重複列唯一鍵的列?

主鍵字段必須只包含唯一值。如果您嘗試在其上插入重複數據,它將引發異常。

如果您想要創建另一列,將處理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的外鍵。 –