【Oracle10】フィールド数が異なるテーブル間の転記とフィールド追加の順番について

このQ&Aのポイント
  • Oracle10でフィールド数が異なるテーブルAとBの転記方法やフィールド追加の順番について教えてください。
  • テーブルAとBのフィールドを対応させて正しく転記する方法や、新たに追加される一時テーブルにフィールドを正しく入れる方法も教えてください。
  • また、フィールド追加した場合の順番や一時テーブルBのフィールドも含めてお聞きしたいです。
回答を見る
  • ベストアンサー

フィールド数が異なるテーブル間の転記と、フィールド追加の順番

Oracle10で似たようなテーブルAとBがあります。BからAに転記したいのですが、フィールドが正しく対応してインサートするか心配です。 AとBは現在Bの方のみrikaが多くあり、今回新たに一時テーブルBだけsyakaiテーブルを追加して、同じことをさせるのですが、 Aテーブルにkai namae kokugo sansuまで正しく入るかのかお聞きしたいです。 フィールド追加した場合の順番もどうなるか知りたいです。 テーブルA(メイン) kai namae kokugo sansu テーブルB(一時的) kai namae kokugo sansu rika (syakai) BからAへ転記するSQL文 insert into A select kai, namae, kokugo, sansu, rika, syakai where kai = 2;

  • bazax
  • お礼率5% (12/228)
  • Oracle
  • 回答数1
  • ありがとう数0

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

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

insert into A select kai, namae, kokugo, sansu FROM B where kai = 2; のように、余分なフィールドを指定しなければOKです。

関連するQ&A

  • Access2000におけるテーブル追加について

    テーブル1にテーブル2の内容をすべて追加しようと思います。 二つのテーブルのフィールド項目は同じにしました。(テストなのでとりあえず番号と名前) マクロを使ってやろうと思い、アクションを「SQLの実行」とし、SQLステートメント には「INSERT INTO <テーブル1> SELECT<社員番号>,<名前>FROM<テーブル2>」 としました。 しかし、マクロを実行してみると「INSERT INTO 構文エラー」となってしまいます。 なぜなんでしょうか?

  • AccessからOrcleのODBCリンクテーブルへの挿入

    OS:XPpro Access:97,2000 Oracle:7 AccessからOracleのODBCリンクテーブルに対して追加クエリを実行すると、 ODBC--リンクテーブル'テーブル名'への挿入に失敗しました。 [Oracle][ODBC Oracle Driver][Oracle OCI]ORA-01461: can bind a LONG value only for insert into a LONG column.(#1461) というエラーが発生します。 メモ型のフィールド'A'をvarchar2(4000)のフィールド'B'に追加する部分で、LeftB(A,4000)としている部分がうまく行かないようようなので、LeftB(A,3000)と丸めてあげると通ります。 質問を纏めますと、 1.varchar2(4000)となっていても、4000Byteのデータを挿入することはできないのでしょうか。 2.発生しているエラーは、私の考えとは別の問題なのでしょうか。 ご回答よろしくお願いします。

  • INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい

    挿入するフィールドの内1つだけを他のテーブルから取ってきた値を使いたいのですが、 insert into table1 (field1, field2, field3) values('a', (select field2 from table2 where field4='xxx'), 'b'); Oracleだと↑の書き方でいけるのですが、PostgreSQL(6.5.3)だとエラーになってしまいます。 2回もDBにアクセスしにいくのはいやなので、1文で書きたいです。上記以外で他の書き方をご存知でしたら教えてください。よろしくお願いします。

  • テーブルのマッチングについて

    ORACLE10gを使用しています。 AとB同じレイアウト(キーも同じ)のテーブルがあります。 この2つのテーブルを比較して、 (1)Aテーブルのみにあるもの:1レコードCテーブルに追加 (2)Bテーブルのみにあるもの:1レコードCテーブルに追加 (3)A、B両方にあるもの:2レコードCテーブルに追加 上記に該当するレコードをCテーブルにINSERTしたいです。 実は、Cテーブルに項目が1つ追加されまして「区分」を書く必要があります。 どのパターン((1)か(2)か(3))でINSERTしたデータかです。 (1):1、(2):2、(3):3をセットする どのようにSQLを作成すると実現できるのでしょうか? ご指導よろしくおねがいします。

  • テーブルにフィールド数以下の値を挿入しようとした時エラーが出ます

    テーブルのフィールド数が10あるとします。挿入したい値が3つしかないとします。 列名を指定せずに挿入するとします。 Insert Table Values('a','b','c') とやった時、フィールド数が足りませんといったようなエラーが表示されます。 列名を省略したやりかたでは、列名分の値を付け加える必要があるのでしょうか? 先頭の3フィールドのみにデータを追加したいと思うのですが、無理でしょうか?

  • insert文等で「`」の有無で失敗するテーブルとしないテーブルがある。

    XAMPP(winXP、PHP4)を使っています。 Aのテーブルでは $query= "insert into table (a,b,c,d) values('1','2','3','4')"; $result = mysql_query($query); でデータが追加されるのに、Bのテーブルでは失敗しました。 今日ずっと何が間違っているのかわからなかったのdですが、 $query= "insert into table (`a`,`b`,`c`,`d`) values('1','2','3','4')"; $result = mysql_query($query); とすると成功しました。 なぜAのテーブルでは「`」が無くても成功したのに、Bのテーブルでは必要なのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • フィールドをデフォルト0にする

    フィールドをデフォルト0にする方法が知りたいです。 以下のようなサンプルがります。 drop table test_a; create table test_a ( name varchar2(10), a number(1), b number(1), c number(1) ) insert into test_a (name) values ('AAA'); insert into test_a (name,a) values ('BBB', NULL); insert into test_a (name,a,b) values ('CCC', NULL,NULL); select * from test_a; この状態では、a,b,cはNULLですが、a,b,cの値をデフォルト値で0にしたい為、 update test_a set a = 0, b = 0, c = 0; として、データを直して、次回から insert into test_a (name) values ('DDD'); とすると、nameがDDDの時もa,b,cが0となるようにテーブル定義を変えたいのですが 既存のテーブルをそのままで、途中から変更する方法が知りたいです。

  • テーブルの中身を違うテーブルへコピー

    お世話になります。 SQLについて質問があるのですが・・・。 Aというテーブルがあり、何件かデータが入っています。 そのAテーブルにフィールドを2つ新たに追加したいのです。 ALTER TABLEは使わずに、 以下の様な操作をしたいと考えております。 1:Aテーブルを違う名前に変更。  もしくはテーブルを丸々コピー。 2:テーブルBを作成。   (テーブルAのフィールドに2つフィールド追加した内容) 3:テーブルBにテーブルAの内容を丸々コピー。   その際、新規に追加した2つのフィールドには、初期値として、何かの文字or数字を入れる。 4:Aテーブルを削除 と、いう感じです。 作成はINSERT、削除はDROPを使えばいいのかなーって 思っているのですが、 テーブル名の変更や、テーブルの内容のコピーが ちょっと分かりません。 上記について、ご教授の程、よろしくお願いします。 なお、DBにはSQL Serverを使用しています。

  • AccessのテーブルにVBAでフィールドを追加したい

    Access97を使用しています。 クロス集計クエリを基にテーブルを新規作成します。 その後、フォームのコマンドボタンのイベントプロシージャでコードを記述してフィールドを追加していきたいのですが、どう書けばいいのでしょうか。 このテーブルは作業用で、頻繁に作って作業後は削除しますが、作成するたびにフィールドの数が異なります。(フィールド名も一部変わります。)それを常に同じフィールド数にしたいのです。追加したフィールドの表題は”-”(空白っぽく表現する)にしたい。 たとえば 商品名|場所A|場所B|合計|仕入先 みかん| 10 | 20 | 30|a店 りんご| 30 | 40 | 70|b店 を、下記のようにしたいと思います。 商品名|場所A|場所B|-|-|合計|仕入先 みかん| 10 | 20 | | | 30|a店 りんご| 30 | 40 | | | 70|b店 また、下記のようなケースもあります。 商品名|場所D|-|-|-|合計|仕入先 みかん| 10 | | | | 10|a店 りんご| 30 | | | | 30|b店 商品名|場所B|場所C|場所D|-|合計|仕入先 みかん| 10 | 20 | 20 | | 50|a店 りんご| 30 | 40 | 10 | | 80|b店 わかりにくい説明ですみません(>_<) よろしくお願いします。

  • 副問合せをいれたINSERT文で、問合せ結果が無い場合

    副問合せをいれたINSERT文で、問合せ結果が無い場合 環境はSQL Server2005です。 テーブルA,テーブルBが存在し、テーブルAにレコード追加する際に一部をテーブルBから抽出して、 INSERTしようとしています。 [SQL文]  INSERT INTO テーブルA(フィールド1, フィールド2, フィールド3,フィールド4・・・)   SELECT 'AAA', 'BBB' ,B.フィールド3, B.フィールド4 ・・・   FROM テーブルB B WHERE ~ この場合、テーブルBにWHEREで指定した条件のレコードが存在しない場合はINSERTされなくなってしまいます。 存在しない場合は、該当のフィールドにはNULLをいれたいのですが、テーブルBからの結果が存在しない場合でも テーブルAにINSERTする方法はありますか?