好的,我有 2 个新表:客户和合同。我将专注于第一个,因为它们具有相同的结构。客户端看起来像:
+-----------+---------+
| client_id | name |
+-----------+---------+
| Value 1 | Value 2 |
+-----------+---------+
并像这样创建:
CREATE TABLE Client (
client_id varchar2(15) NOT NULL,
name varchar2(100) NOT NULL,
CONSTRAINT Client_pk PRIMARY KEY (client_id)
) ;
我还有一张旧桌子:old_contracts看起来像:
+------------+----------+------+
| contractid | clientid | name |
+------------+----------+------+
| con1 | cli1 | n1 |
| con2 | cli2 | n2 |
| con3 | cli2 | n2 |
| con4 | cli3 | n3 |
| con5 | cli3 | n3 |
+------------+----------+------+
定义:
CREATE TABLE old_contracts(
contractid varchar2(15) NOT NULL
clientid varchar2(15) NOT NULL,
name varchar2(100) NOT NULL
) ;
我想从 old_contract 中获取数据并将其插入客户端。
这个 old_contracts 表的行有重复的 clientid(一个客户可以有多个合同),但我不想在 Client 表上有重复,所以我这样做:
INSERT INTO Client (
client_id,
name
) SELECT DISTINCT
clientid,
name
FROM old_contracts;
避免重复。无论如何,我收到此错误:
错误 SQL:ORA-00001:违反了唯一约束 (USER.CLIENT_PK)
00001.00000 - “违反了唯一约束(%s.%s)”
这是怎么回事?我相信DISTINCT关键字会做这件事。
我还尝试按照相关帖子(即这个)中的建议添加WHERE NOT EXISTS子句,但我得到的结果是相同的错误。
最有可能的是,对于给定的 clientid,名称并不总是相同的。
试试这个:
INSERT INTO Client (
client_id,
name
) SELECT clientid,
max(name)
FROM old_contracts
GROUP BY clientid;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句