回答編集履歴

5

変更

2016/10/16 10:43

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -1,4 +1,18 @@
1
- NOT EXIST版です。
1
+ NOT EXIST版です。訂正です。
2
+
3
+
4
+
5
+ ```sql
6
+
7
+ INSERT INTO RS (code,name) SELECT code,name FROM `ALL`
8
+
9
+ WHERE NOT EXISTS (SELECT 1 FROM RS WHERE code=`ALL`.code);
10
+
11
+ ```
12
+
13
+
14
+
15
+ NOT IN 版です。
2
16
 
3
17
 
4
18
 

4

変更

2016/10/16 10:43

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- nameが変更される場合は
27
+ nameが変更される場合は、但し(codeがprimary key)
28
28
 
29
29
  ```
30
30
 

3

変更

2016/10/16 10:10

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -17,3 +17,19 @@
17
17
  INSERT INTO RS(code,name) SELECT t1.code,t1.name FROM `ALL` t1 LEFT JOIN RS t2 USING(code) WHERE t2.code IS NULL;
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ > ALLが最新情報のため、RSを最新情報に更新したいと思います
24
+
25
+
26
+
27
+ nameが変更される場合は
28
+
29
+ ```
30
+
31
+ INSERT INTO RS (code,name) SELECT t.code , t.name FROM `ALL` AS t
32
+
33
+ ON DUPLICATE KEY UPDATE RS.name = t.name
34
+
35
+ ```

2

変更

2016/10/16 10:08

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```sql
6
6
 
7
- INSERT INTO RS(code,name) SELECT code,name FROM ALL WHERE ALL.code NOT IN (SELECT code FROM RS);
7
+ INSERT INTO RS(code,name) SELECT code,name FROM `ALL` WHERE `ALL`.code NOT IN (SELECT code FROM RS);
8
8
 
9
9
  ```
10
10
 
@@ -14,6 +14,6 @@
14
14
 
15
15
  ```sql
16
16
 
17
- INSERT INTO RS(code,name) SELECT t1.code,t1.name FROM ALL t1 LEFT JOIN RS t2 USING(code) WHERE t2.code IS NULL;
17
+ INSERT INTO RS(code,name) SELECT t1.code,t1.name FROM `ALL` t1 LEFT JOIN RS t2 USING(code) WHERE t2.code IS NULL;
18
18
 
19
19
  ```

1

追加

2016/10/16 10:02

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -7,3 +7,13 @@
7
7
  INSERT INTO RS(code,name) SELECT code,name FROM ALL WHERE ALL.code NOT IN (SELECT code FROM RS);
8
8
 
9
9
  ```
10
+
11
+
12
+
13
+ JOIN でも可能
14
+
15
+ ```sql
16
+
17
+ INSERT INTO RS(code,name) SELECT t1.code,t1.name FROM ALL t1 LEFT JOIN RS t2 USING(code) WHERE t2.code IS NULL;
18
+
19
+ ```