2

我正在尝试复制一组类似于以下内容的数据:

地址:

| ADDRESS_CODE | ADDRESS_TYPE | COLUMNCOLUMCOLUMN... (40 columns or so)
|   DEFAULT    |   VENDOR1    | DATA DATA DATA
|   002        |   VENDOR1    | DATA DATA DATA
|   003        |   VENDOR1    | DATA DATA DATA
|   004        |   VENDOR1    | DATA DATA DATA
|   005        |   VENDOR1    | DATA DATA DATA

接触:

| CONTACT_CODE |   VENDOR_ID  | COLUMNCOLUMNCOLUMN... (30 columns or so)
|   DEFAULT    |   VENDOR1    | DATA DATA DATA
|   002        |   VENDOR1    | DATA DATA DATA

我正在使用几个 SQL 查询来尝试解决这个问题,但它只会从联系人中复制 Default 和 002 5 次,或者只在无限循环中执行其中一行。我正在插入联系人表。

这是我想要的 CONTACT 结果:

| CONTACT_CODE |   VENDOR_ID  | COLUMNCOLUMNCOLUMN... (30 columns or so)
|   DEFAULT    |   VENDOR1    | DATA DATA DATA
|   002        |   VENDOR1    | DATA DATA DATA
|   003        |   VENDOR1    | DATA DATA DATA
|   004        |   VENDOR1    | DATA DATA DATA
|   005        |   VENDOR1    | DATA DATA DATA

任何帮助,将不胜感激。

我一直在使用类似以下查询的内容:

select c.vendor_id, c.contact_code, a.address_code 
from contact c, address a
inner join contact
on c.contact_code <> a.address_code
and c.vendor_id = a.address_type
group by c.vendor_id;
4

3 回答 3

1
insert into contact (CONTACT_CODE,VENDOR_ID,<COLUMNS list>)

select Address_code, Address_type, <COLUMNS list>
from ADDRESS a
left join contact c
   on a.address_code=c.contact_code
   and a.address_type=c.vendor_id
where c.contact_code is null
于 2012-11-29T07:28:29.433 回答
0

您可以在地址和联系人表之间使用左外连接来获得所需的结果。

于 2012-11-29T07:07:36.377 回答
0

您可以使用INSERT带条件的语句:

INSERT INTO contact c
  (contact_code, vendor_id, < OTHER COLUMNS >)
  SELECT a.address_code, a.address_type, a.OTHER COLUMNS,
    FROM address a
   WHERE NOT EXISTS (SELECT *
            FROM CONTACT c, address a
           WHERE a.address_code = c.contact_code
             AND a.address_type = c.vendor_id);

虽然我没有测试过。。

于 2012-11-30T09:59:27.447 回答