-1

質問として、目標を達成する方法は?例えば:

表1

place_id     place_name      Invoice_no
100       Sydney            NULL
101       Melbourne         NULL
102       Adlaide           NULL
103       Gold Coast        NULL
104       Perth             NULL
105       Hobart            NULL

表 2

Invoice_id   Invoice_no       place_id
1        NIT1001            100
2        NIT1002            101
3        NIT1002            102
4        NIT1003            103

ターゲット テーブル

place_id    place_name  Invoice_no
100         Sydney          NIT1001        
101        Melbourne        NIT1002        
102        Adlaide          NIT1002        
103        Gold Coast       NIT1003        
104        Perth            NULL
105         Hobart          NULL
4

2 に答える 2

0

LEFT JOIN2 つのテーブルtable1table2、2 番目のテーブルから一致しない行を取得するには、次のようにしますinvoice_id = NULL

INSERT INTO TargetTable(place_id, place_name, invoice_id)
SELECT
  t1.place_id,
  t1.place_name,
  t2.invoice_id
FROM table1 AS t1
LEFT JOIN table2 AS t2 ON t1.place_id = t2.place_id;

SQL フィドルのデモ


編集:

UPDATEこれを行うにはwithを使用する必要がありますJOIN。何かのようなもの:

UPDATE t1
SET  t1.Invoice_no =  t2.Invoice_no
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t1.place_id = t2.place_id;

更新された SQL Fiddle デモ

これにより、テーブルtable1は次のようになります。

| PLACE_ID | PLACE_NAME | INVOICE_NO |
--------------------------------------
|      100 |     Sydney |    NIT1001 |
|      101 |  Melbourne |    NIT1002 |
|      102 |    Adlaide |    NIT1002 |
|      103 | Gold Coast |    NIT1003 |
|      104 |      Perth |     (null) |
|      105 |     Hobart |     (null) |
于 2013-03-26T06:53:33.300 に答える
0

JOIN句を使用します。

INSERT INTO targetTable
SELECT a.place_id, a.place_name, b.invoice_no
FROM table1 a LEFT JOIN table2 b
ON a.place_id = b.place_id
于 2013-03-26T06:54:34.053 に答える