Oracle 11g从另一个具有重复

时间:2017-03-07 11:29:06

标签: database oracle oracle11g insert duplicates

好的,我有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中获取数据并将其插入到Client中。

这个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 关键字会做的事情。

我也尝试在相关帖子(即this one)中建议添加 WHERE NOT EXISTS 子句,但我得到的结果是同样的错误。

1 个答案:

答案 0 :(得分:1)

最有可能的是,对于给定的clientid,名称并不总是相同。

请改为尝试:

jQuery.noConflict();
jQuery(function($) {
  var $row = $('#about-btn');

  $(document).scroll(function(){
    var scrollTop = $(this).scrollTop();
    $row.toggleClass('active', scrollTop > 750 && scrollTop < 800);
  });
});