• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLSERVER:自己結合した上でUPDATE)

SQLServerでの自己結合を使用したUPDATE方法

このQ&Aのポイント
  • SQLServerでの自己結合を使用したUPDATE方法について教えてください。
  • 顧客マスタテーブルの特定の列を自己結合して更新する方法を知りたいです。
  • UPDATE文で自己結合を使用してテーブルの特定の列を書き換える方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

とりあえず、あいまいなところをなくしてみては? UPDATE T1 SET T1.[CustName]=T2.[CustName] FROM [Tab] T1 INNER JOIN [Tab] T2 ON T1.[Cd]=T2.[Cd] WHERE T1.[Sys]='S2' AND T2.[Sys]='S1' ※テストしていません。SQL2005用のコードを参考にしました。

kanegon0224
質問者

お礼

ありがとうございます。無事更新できました。こういう書き方はできないものと思い込んでいました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

UPDATEの次は別名のT1を記入する必要があります。

kanegon0224
質問者

お礼

別名はここに書いてはいけないものと思い込んでおりました。 おかげさまで無事更新できました!ご教授ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3つのテーブルを結合した場合のWHERE

    MySQLで3つのテーブルを結合した場合のWHEREがよくわかりません。 まず、下のような2つのテーブルがあるとします。 【テーブルaa】 ID | Name -------------- 1 | x 2 | y 3 | z 【テーブルbb】 ID | hizuke | category --------------------- 1 | stamp1 | a 1 | stamp2 | b 1 | stamp3 | c 2 | stamp1 | a 2 | stamp2 | d 3 | stamp1 | c この2つのテーブルを結合して、同じIDでhizukeが最大値のデータを抽出するクエリは、 http://okwave.jp/qa/q6918385.htmlを参考にして、 SELECT aa.Name, bb.category FROM bb INNER JOIN aa ON aa.ID = bb.ID where (bb.ID, bb.hizuke) in (SELECT bb.ID, max(bb.hizuke) FROM bb group by bb.ID ) ; でできました。 しかし、もう1つテーブルを結合すると期待した結果が得られなくなってしまいました。 【テーブルcc】 category | choice --------------------- a | ss b | tt c | uu というテーブルがあって、上のクエリで得られた bb.categoryと cc.categoryをリンクして、choiceを取得しようとしたのですがうまくいきません。 SELECT aa.Name, bb.hizuke, bb.category, cc.choice FROM bb INNER JOIN cc ON bb. category = cc. category INNER JOIN aa ON aa.ID = bb.ID where (bb.ID, bb.category, bb.hizuke) in (SELECT bb.ID, bb.category, max(bb.hizuke) FROM bb group by bb.ID ); というクエリでは、ダメなようです。 INNER JOINを入れ子にしたり、いろいろと試したのですがどうにもうまくいきません。 どうも私の力では解決困難なようです。どなたかヘルプを。

  • テーブル間の結合

    次のような操作をしたいのですが、 Table1 CD 1 2 3 Table2 ID TT 1 1 1 2--ココ 2 1 2 2--ココ 結果 Table1とTable2を関連づけて CD ID TT 1 1 2 2 2 2 Table2のTTをMAX関数を使っての参照です。 ちなみに次のようなSQL文ではエラーとなりました。 select T1.CD , T2.ID , MAX(T2.TT) from Table1 T1 INNER JOIN Table2 T2 ON(T1.CD = T2.ID) GROUP BY T2.ID アドバイス等がありましたら、宜しくお願いします。

  • テーブル結合について

    SQL Serverで、メイン、サブ1、サブ2、サブ3、サブ4というテーブルがあり、以下のSQLを実行すると、メインにあるすべてのデータ(10列)が抽出されます。 SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id しかし、上記のSQL文に追加して、 SELECT * FROM メイン INNER JOIN サブ1 ON メイン.name1=サブ1.id INNER JOIN サブ2 ON メイン.name2=サブ2.id INNER JOIN サブ3 ON メイン.name3=サブ3.id INNER JOIN サブ4 ON メイン.name4=サブ4.id とすると、メイン内の10列のうち、2列しか抽出されません。 サブ4を結合しても、一つ目のSQL文と同じ結果を抽出したかったのですが、どこがおかしいのでしょうか? SQL文がまずいのか、サブ4のテーブル内容のせいなのか、SQL Serverの設定がおかしいのか、さっぱり見当がつきません。 足りない情報がありましたら補足いたしますので、どうぞよろしくお願いします。

  • 異なる二つのテーブルの結合について・・・

    お世話になっております。 ちょっとややこしい質問になります。 「1」 Aと言うテーブルのAAと言うカラムから、$AAAと言うレコードを抽出致しました。ここまでは出来ました。(ここでの抽出結果を$CCCと致します。) 「2」 「1」の抽出結果($CCC)を元に、Bと言うテーブルのBBと言うカラムから、BBBと言うレコードも抽出し結合したいと考えております。 一番の問題は、「1」で出た結果(CCC)を元に、抽出する事が出来ません。 「1」のソースのみ完成してます。 $rs=$DB->query("SELECT * FROM `A` WHERE AA = '$AAA' ↑の抽出結果=$CCCを元に↓ $rs=$DB->query("SELECT * FROM `B` WHERE BB = '$CCC' 結合させたいんです!! セクションしているので結合できないとバラバラになってしまいます。。。。 ご教示お願い致します! inner join を使うのは分かるのですが・・・進めません。(泣)

    • ベストアンサー
    • MySQL
  • 列を結合させて外部キーを設定する方法

    AテーブルのAA列とBB列を結合させて 見かけ上CC列を作成し BテーブルのDD列を外部キーをはりたいのですが そういった事は可能でしょうか? イメージ的には以下のような感じです。 Aテーブル AA列 decimal (1,0)    DD列 decimal (3,0) 外部キー CC列(AA列+BB列)とDD列 Bテーブル DD列 decimal (4,0) 解り難くて申し訳ございませんがよろしくお願いします。

  • SQLserverのテーブル値関数の使い方

    SQLserver2012でテーブル値関数を作成しています。 その際、実際の値ではなく、テーブルの列名を渡し、外部結合をしたいのですが、 上手くいきません。列名が指定できないのでしょうか。 教えてください。 --テーブル値関数 CREATE FUNCTION Func1 ( @User_name_no NVARCHAR(6), @String NVARCHAR(4000), @Flg NCHAR(1) ) RETURNS TABLE AS RETURN (   処理 ) select * from func1('000001','aaaaaaaaaaaa','1'); 問題なく処理が行われます。 が 以下の様にテーブルの列名を指定し外部結合すると上手くいきません。 select B.* from USER_INFO_TBL A inner join func1(A.user_no,T1.user_data,T1.flg) B on A.user_no=B.User_no_no; とか select B.* from USER_INFO_TBL A inner join (select * from func1(A.user_no,T1.user_data,T1.flg)) B on A.user_no=B.User_no_no; メッセージ 4104、レベル 16、状態 1、行 4 マルチパート識別子 "A.user_no" をバインドできませんでした。 メッセージ 4104、レベル 16、状態 1、行 4 マルチパート識別子 "A.user_data" をバインドできませんでした。 となります。 どうすればよいか教えてください。お願いします。

  • mySQLの内部結合について

    現在mySQLを使って、SQL文の勉強をしているのですがわからないことがあり、質問させていただきました。 テーブル同士をINNER JOINして結果を取得して、これに対してさらに別の処理(Whereなど)を行いたいのですが、うまくやり方がわかりません。 具体的にSQL文でいうとこんな感じです(ただしエラーが出て動きません)。 SELECT cmaster.comic_id,tags,title FROM mysql.comic_tag as ctag INNER JOIN mysql.comicmaster as cmaster ON ctag.comic_id = cmaster.comic_id AND WHERE tags = 'aa' この処理でやりたいことを説明するとcomic_tagとcomicmasterを結合して、その結果に対してさらにWhereでデータを絞るということしています。 このような場合はどのように処理をしたらいいんでしょうか?またjoinした後のデータを、既存のテーブルのように扱いたいのですが、なにか方法はないのでしょうか?

    • ベストアンサー
    • MySQL
  • 3テーブル外部結合方法について

    3つのテーブルを外部結合したいのですが・・・、 こんがらがってしまいました。 A,B,Cの3テーブルがあり、A,B,Cの順に外部結合 (LEFT OUTER JOIN)したいのですが、 A,BのテーブルについてはWhere句の条件指定が 必要です。 Select From (Select AA.a From A AA Where b = xxxx) BB Left Outer Join (Select CC.b From B CC Where c = eeee and BB.a = CC.b) On ???? こんな感じでつまづいてしまいました・・・

  • ExcelVBAでSQLServerに追加するには。

    教えてください! ExcelVBAの[intNo]と[strNamse]を ADOでSQLServerにレコード追加するにはどうしたらいいのですか? [ExcelVBA] Dim intNo as Integer = Range("A2")の値 Dim strName as String = Range("B2")の値 [SQLServer] Data Source= NetworkPC1 Initial Catalog= DataBase1 ID=aa Password=123456 テーブル= Syain 列1= No 列2= Name

  • SQLServer2008のSQLを可変にする方法

    SQL初心者です。 以下の3つのテーブルを条件によって結合したり、しなかったりを行いたいのですが、そもそもSQLServerのストアドプロシージャでそれが実現出来るのかもわかりません。。。。 どなたかご教授をお願い致しますm(_ _)m 使用するテーブルは以下の3つです。 1.ITEM_MST 項目: ITEM_CD, ITEM_NM, BUMON_CD 2.BUMON_MST 項目:BUMON_CD, BUMON_NM, CLASS_CD 3.CLASS_MST 項目:CLASS_CD, CLASS_NM, LOCAL_CD 実行するSP------------------------------------------------ test_SP( @引数1 , @引数2 ) SPの中で実行されるSQL-------------------------------------- SELECT ITM.ITEM_CD, ITM.ITEM_NM, BMN.BUMON_NM FROM ITEM_MST ITM INNER JOIN BUMON_MST BMN ON BMN.BUMON_CD = ITM.BUMON_CD WHERE ITM.CD = @引数1 ------------------------------------------------------------ 上記のSQLに対して、もし「@引数2 = 1」だったら CLASS_MSTテーブルを結合してLOCAL_CDの昇順で表示する以下のSQLを追加して表示させたいです。 INNER JOIN CLASS_MST CLS ON CLS.CLASS_CD = BMN.CLASS_CD ORDER BY CLS.LOCAL_CD そもそも引数によって、SQL文の結合するテーブルを変更する事は可能なのでしょうか? 調べ方が悪いのか、ネットで検索しても解決方法がわかりませんでした。。。 どうかご教授お願い致します。

このQ&Aのポイント
  • MFC-J5630CDWでFAXの受信ができなくなりました。電源を切って再起動しても改善されない状況です。インク状態は正常です。
  • お使いの環境はJcomのアナログ回線です。他の通信は問題なく行われています。
  • この問題を解決するためには、まず電源を完全に切ってから2分待って再起動してみてください。それでも改善しない場合は、製品の設定を確認し、サポートに連絡してください。
回答を見る