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 クエリを使用してこれを解決しようとしていますが、連絡先からデフォルトと 002 のみを 5 回複製するか、無限ループで行の 1 つだけを複製し続けます。連絡先テーブルに挿入しています。

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 に答える