質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

Q&A

2回答

7024閲覧

DB2 UPDATE時の更新条件(副問い合わせ)の書き方

misakiyu

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

DB2

DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

0グッド

0クリップ

投稿2020/07/11 01:28

DB2のSQLの書き方で困っております。
以下のSELECT文の条件でひっかかるレコードをUPDATEしたいのですが、書き方に困っております。
WHERE EXISTSで書けばよいのか、UPDATE SET FROMで書けばよいのか・・・(FROMはそもそもDB2で書ける?)
よければお知恵を貸していただけると幸いです。

■テーブルカラム
・table_A
id,date,time,type1,text
・table_B
id,date,time,type1,type2

■SELECT文
SELECT type2 FROM
(SELECT * FROM table_A WHERE text LIKE 'XX%')AS A
LEFT OUTER JOIN (SELECT * FROM table_B WHERE type1 = '01') AS B
ON A.id = B.id
AND A.date = B.date
AND A.time = B.time
WHERE type2 in ('1','2')

■以下の内容で更新したい
UPDATE table_B SET type2 = '0'

以上です。よろしくお願いいたします。
(動作確認は月曜日以降でないと確認できないため、返信が遅くなりそうです。申し訳ございません。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

LEFT JOIN している側のtable_bを更新したいというのは矛盾してますので、inner joinに読み替えています。
※未検証です。悪しからず。

in 記述

SQL

1update table_B set type2='0' 2where type1 = '01' 3 and type2 in ('1','2') 4 and (id, date, time) in ( 5 select id, date, time from table_a 6 where text like 'XX%' 7 )

exists 記述

SQL

1update table_B tb set type2='0' 2where type1 = '01' 3 and type2 in ('1','2') 4 and exists ( 5 select 1 from table_a 6 where text like 'XX%' 7 and id=tb.id and date=tb.date and time=tb.time 8 )

UPDATE SET FROMで書けばよいのか・・・(FROMはそもそもDB2で書ける?)

リファレンスには記載は無いようですけど、なぜFROM記述が出来ると思ったのですか?
似たような事は、条件とset (a,b,c)=(select a,b,c from ~)の組合せで出来そうですが。

無償版でローカルに環境を作っておくと文法的な事は試せると思います。
DB2DBA: 無料のDB2 Developer Community Editionで個人用検証環境を作ろう

投稿2020/07/11 02:15

編集2020/07/11 02:29
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2020/07/11 01:45

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問