質問するログイン新規登録

回答編集履歴

5

追記

2019/04/11 04:19

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -22,4 +22,7 @@
22
22
  INSERT INTO wrk(
23
23
  a, b, c, d
24
24
  )
25
- ```
25
+ ```
26
+ 因みに使用しているのが9.5なのに、upsertが使えないとはどういう事ですか?
27
+ upsertというコマンドは9.5以降にもありませんよ。
28
+ insert構文が拡張されてupsertと同等の事が出来るという事ですので。

4

訂正

2019/04/11 04:19

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,4 @@
1
- `RETURNING (temp.a, temp.b)`だと型が無いので、`FROM upsert`部分でエラーなのでょう
1
+ `RETURNING (temp.a, temp.b)`だと型が不明で、`FROM upsert`部分でエラーっているかもれません
2
2
  以下の様にRETURNING でテーブルを返却するようにしてみて下さい。
3
3
  ```SQL
4
4
  WITH upsert AS(

3

追記

2019/04/11 04:07

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -15,4 +15,11 @@
15
15
  FROM temp
16
16
  WHERE (a, b) NOT IN
17
17
  (SELECT a, b FROM upsert)
18
+ ```
19
+ 後は、wrkとtempの項目の並びが一致してないと実行時のエラーとなります。
20
+ その場合は、以下の様に対比する項目を明確にします。
21
+ ```SQL
22
+ INSERT INTO wrk(
23
+ a, b, c, d
24
+ )
18
25
  ```

2

修正

2019/04/11 04:05

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,5 +1,5 @@
1
- syntaxエラーですか?
1
+ `RETURNING (temp.a, temp.b)`だと型が無いので、`FROM upsert`部分でエラーなのしょう。
2
- 以下の様にRETURNING で全てを返却するようにしてみて下さい。
2
+ 以下の様にRETURNING でテーブルを返却するようにしてみて下さい。
3
3
  ```SQL
4
4
  WITH upsert AS(
5
5
  UPDATE wrk

1

訂正

2019/04/11 03:46

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,14 +1,16 @@
1
- syntaxエラーなら、以下が怪しいですね。
1
+ syntaxエラーですか?
2
+ 以下の様にRETURNING で全てを返却するようにしてみて下さい。
2
3
  ```SQL
4
+ WITH upsert AS(
3
- INSERT INTO wrk
5
+ UPDATE wrk
4
- SELECT a, b, c, d
6
+ SET c = temp.c,
7
+ d = temp.d
5
8
  FROM temp
6
- ```
9
+ WHERE temp.a = wrk.a
7
- 以下の様にしてみて下さい。
10
+ AND temp.b = wrk.b
8
- ```SQL
9
- INSERT INTO wrk(
11
+ RETURNING (wrk.*)
10
- a, b, c, d
11
12
  )
13
+ INSERT INTO wrk
12
14
  SELECT a, b, c, d
13
15
  FROM temp
14
16
  WHERE (a, b) NOT IN