SQL2005での操作についての相談

このQ&Aのポイント
  • SQL2005での操作について相談があります。初心者の知識しかないため、矛盾があるかもしれませんが、ご容赦ください。
  • データベースAとBがあり、AとBは同じテーブルを持っています。Aのデータの一部が消えてしまったため、BのデータからAに上書きしたいですが、具体的な方法がわかりません。
  • 異なるデータベース間でのデータの上書きについて、可能性を探っています。Aの氏名とBの氏名が一致する場合、Aの会員番号をBの会員番号に上書きするイメージです。
回答を見る
  • ベストアンサー

SQL2005での操作についてご相談です。

SQL2005での操作についてご相談です。 初心者に毛が生えたか生えないか程度の知識しかないので、質問に矛盾がありましたらご容赦ください。 2つのデータベース、AとBがありまして、AとBは同じテーブルが作られています。(BはAをバックアップしたものです) 何かの操作で、Aのデータの一部(会員番号の様な物)が消えてしまったので、BのデータからAへ上書きしたいのですが、そのやり方がわかりません。AのデータはBの時点から更新されてきているので、完全にBに置き換えることが出来ません。  もし Aの氏名=Bの氏名 なら Aの会員番号 に Bの会員番号 を上書きする、というイメージなのですが・・・  ちがうデータベース間でもこの様なことは可能でしょうか?よろしくお願いいたします。

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

  • ベストアンサー
  • KHSSSK
  • ベストアンサー率76% (13/17)
回答No.1

他のDBを参照するには、同じサーバ内であれば DB名.スキーマ名.テーブル名とすれば可能です。 例えば SELECT * FROM DB2.dbo.TBL1 他のサーバの場合はリンクサーバの設定をして サーバ名.DB名.スキーマ名.テーブル名とすれば可能です。 例えば SELECT * FROM SERVER2.DB3.dbo.TBL1 質問の例だと以下のようなSQL文になりますかね?(DBAから行う場合) UPDATE TBL1 SET TBL1.会員番号 = TBL2.会員番号 FROM TBL1 INNER JOIN DBB.dbo.TBL1 AS TBL2 ON TBL1.会員名 = TBL2.会員名 WHERE TBL1.会員番号 IS NULL

zenigata711
質問者

お礼

お礼が遅くなり申し訳ありません。有難うございました!

関連するQ&A

  • 【SQL】他テーブルに含まれる値に合致する行を抽出

    SQL素人ですが、SQLが使えるツールからデータを抽出したく、SQL文を教えていただけますでしょうか。 ・テーブルA:会員データが格納されている(氏名、メルアド、郵便番号等が入っている) ・テーブルB:特定の郵便番号のみが入っている テーブルAのデータの中からテーブルBに入っている郵便番号に合致するメルアドを抽出したい。 何卒宜しくお願い申し上げます。

  • SQL Server2000で列のコピーってできるのでしょうか?

    AAAサーバAAデータベースAテーブル BBBサーバBBデータベースBテーブル があったとしまして、BテーブルはAテーブルのコピーでデータベースの型はまったく同じです。 Aテーブル、Bテーブル別々に更新をかけてしまった為 Bテーブルのある列(Eメール入力欄)をAテーブルの同じ場所に上書きコピーしたいのです。 つまり、AテーブルのEメール列だけをBのデータで上書きしたい。 この場合のオペレーションはどのようになるのでしょうか? おしえてください><

  • SQLの問題です。

    以下のような二つのテーブルがあります。 社員テーブル 社員番号 社員氏名 1     花子 2     太郎 所属テーブル 社員番号 所属番号 1     10 1     20 2     30 欲しいのは以下の結果です。 1 花子 2 太郎 以下のSQLを実行すると、 SELECT distinct a.社員番号, a.社員氏名, b.所属番号 FROM 社員 a,所属 b where a.社員番号 = b.社員番号 order by 所属番号 1 花子 1 花子 2 太郎 となってしまいます。 先に述べたとおりの結果を取得するにはどういうSQLを書いたらいいでしょうか? お知恵を貸してください。宜しくお願いします。 Oracle8iを使用しています。   

  • 【SQL】existsでの商演算

    閲覧ありがとうございます. 現在SQLでデータベースの勉強をしているのですが,existsを用いて商演算を行おうとしてわからない箇所が出てきたので,その点に関しての質問をさせて頂きます. 例として,A,Bと名付けた2つのテーブルを最初に用意します. [テーブル1(名前:机1)] | 番号 |氏名|年齢| 好物 | --------------------------- | 12 | あ | 1 | りんご | | 23 | い | 1 | すいか | | 23 | い | 1 | りんご | | 45 | え | 3 | すいか | | 45 | え | 3 | りんご | [テーブル2(名前:机2)] | 好物 | ---------- | りんご | | すいか | この机1を机2で割ることで,この要素を含む氏名を取り出したいと考えて,以下のようなSQL文を実行しました. select 氏名 from 机1 A where exists( select * from 机2 B where A.好物 = B.好物); [求めている結果表示] | 番号 |氏名| ------------- | 23 | い | | 45 | え | [実際に表示された結果] | 番号 |氏名| ------------- | 12 | あ | | 23 | い | | 23 | い | | 45 | え | | 45 | え | 実行すると (1)氏名が重複で表示されてしまう (2)「りんご」のみ好物の「あ」も表示されてしまう という問題が発生してしまい,色々と調べて考えたものの,結局分からなかったので,今に至ります. 長文・駄文すみませんでした. まだSQLを学び初めて少ししか経っていないので,全く違うことをしていたらすみません.よろしければ,問題解決へのアドバイスをお願いします.

  • SQL操作のC#書き換え

    よろしくお願いします。 現在勉強のため、SQLとC#をやっています。 課題として出されたものが、 AテーブルのデータをTRUNCATEを使って 全削除するSQL文を、 C#を使って全く同じ操作ができるようにする、 要するにSQL文をC#に書き換える といったものが出ました。 正直初心者なので見当もつきません。 どうかご助力お願いします。

  • mysql でのsqlの書き方について教えてくださ

    mysql でのSQLの書き方についての質問です。 テーブルA(2項目 他既存データ) 氏名(姓) 氏名(名) 山田    太郎 山田    次郎 テーブルB(4項目) ふりがな氏名(姓) ふりがな氏名(名) 氏名(姓) 氏名(名) やまだ        たろう          山田    太郎 やまだ        じろう          山田    次郎 といった2つのテーブルがあります。 テーブルAに ふりがな氏名(姓) ふりがな氏名(名)  の2項目を追加してテーブルBのふりがなを 対応するテーブルAのふりがなに update したいのです。 内容がわかりにくくてすみません。

    • ベストアンサー
    • MySQL
  • ACCESS SQL 左結合しなければならない理由

    ACCESSで作成されたVBAのSQLコードを理解しているのですが、 テーブルAは番号、氏名、住所、年、月、・・・ テーブルBは番号、身長、体重、・・・ という2つのテーブルがあって、 式(1)のSQLでは、 テーブルAにテーブルBを左結合しているのですが、 なぜ左結合しなければならないのかがよく分かりません。 この後、 rst.Open strSQL, CurrentProject.Connection Do Until rst.EOF  str氏名 = rst!氏名  (省略) rst.MoveNext Loop rst.Close Set rst = Nothing で氏名を取り出しているだけで テーブルBのフィールドは何も使っていないようなので、 素人の私には、テーブルBを左結合しなくても、 式(2)のSQLでいいように思えるのですが、 式(1)と式(2)で何か違いがあるのでしょうか。 --式(1)---------------------------------------- strSQL = _ "SELECT テーブルA.年, テーブルA.月, テーブルA.住所, テーブルA.番号, " & _ "テーブルA.氏名 " & _ "FROM テーブルA LEFT JOIN テーブルB ON テーブルA.番号 = テーブルB.番号 " & _ "GROUP BY テーブルA.年, テーブルA.月, テーブルA.住所, テーブルA.番号, " & _ "テーブルA.氏名 " & _ "HAVING テーブルA.年 = '" & 指定年 & "' AND テーブルA.月 = '" & _ 指定月 & "' AND テーブルA.住所 = '" & 指定住所 & "' " & _ "ORDER BY テーブルA.年, テーブルA.月, テーブルA.番号" --式(2)---------------------------------------- strSQL = _ "SELECT テーブルA.年, テーブルA.月, テーブルA.住所, テーブルA.番号, " & _ "テーブルA.氏名 " & _ "FROM テーブルA & _ "GROUP BY テーブルA.年, テーブルA.月, テーブルA.住所, テーブルA.番号, " & _ "テーブルA.氏名 " & _ "HAVING テーブルA.年 = '" & 指定年 & "' AND テーブルA.月 = '" & _ 指定月 & "' AND テーブルA.住所 = '" & 指定住所 & "' " & _ "ORDER BY テーブルA.年, テーブルA.月, テーブルA.番号" ------------------------------------------------ よろしくお願いします。

  • データベースを使用して、SQLのデータを上書き

    データベースを使用して、SQLのデータを上書きしたいのですが、 『m_control』テーブルの「controlid」にある同名データ('PRIMARY')があるため、エラーになります。 どうしたら上書きできるのか、対応方法を教えてください。

  • 簡単なSQLに関して

    初歩的なSQLの質問で申し訳ありません。 教えて下さい。 下記のような、ある2つの異なる名前の同項目のテーブルが存在します。 《テーブル》 Aテーブル   社員番号、日付、内容 Bテーブル  社員番号、日付、内容  ※ 内容に関しては、AテーブルとBテーブルで全く違います。 これらの2つのテーブルをマージさせ、社員番号毎の内容毎、日付順に したいと考えています。 どのようなSQLを書けば良いでしょうか?? 尚、テーブルに関しては、諸事情であえて2つに分けてあります。 よろしくお願いします。

  • SQL教えて下さい。

    あまり詳しくないので教えて下さい。 Aテーブル Bテーブル があり Bに存在してAに存在しないBのデータを削除する SQL文を教えて下さい。 (Bのみのデータが削除したい) AとBのテーブルはKEY1で紐付いています。 知っている人には簡単なものかも知れませんが よろしくお願いします。