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

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

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

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

Q&A

解決済

1回答

1108閲覧

下記のUpdate分のHoge_Order in(select~)の部分が分かりません。

King_of_Flies

総合スコア382

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

0グッド

0クリップ

投稿2017/07/21 02:55

sql

1UPDATE 2 Hoge_Mst 3SET 4 Name = '名前1' 5WHERE 6 Hoge_Agent in ('1','2','3') 7AND 8 Hoge_Order in 9 (SELECT Hoge_Order 10 FROM Hoge2_Mst 11 WHERE Hoge_State = '1' 12 )

これはどういうデータが取れますでしょうか。
最初のUPDATEで更新の処理だと分かります。
WHERE区で条件を指定していて、その条件に当てはまるものであれば、
Nameに'名前1'をセットするということでしょう。

条件1は下記の記述で
Hoge_Agent in ('1','2','3')
Hoge_MstのHoge_Agentが1or2or3であること。

条件2は下記の記述で
Hoge2_MstのHoge_State = '1'である行のHoge_Orderが
hoge_MstのHoge_Orderが等しい?であること

ということなのでしょうか。

条件1で使われているinと条件2で使われているinは同様の一致判定をしているということでよいのでしょうか?

拙い文章で分かりにくいかもしれませんが、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

この場合、inの中のサブクエリにHoge_mstのデータは登場しませんので、単純なサブクエリです。

SELECT Hoge_Order FROM Hoge2_Mst WHERE Hoge_State = '1'とすれば何かしらのリストが得られますが、そのリストをinの引数にする、という意味です。

投稿2017/07/21 03:00

maisumakun

総合スコア145183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問