- ベストアンサー
レコードの更新と追加
k_o_r_o_c_h_a_nの回答
1. update TARGET x set (yen1,yen2,yen3,yen4,yen5,…,yen20)= (select yen1,yen2,yen3,yen4,yen5,…,yen20 from TARGET y where x.siten=y.siten and y.year=200503) where x.year=200603; 2. 登録したいデータが登録先に存在しないことを確認の上、 一括インサート。 insert into TARGET select 200604,siten,yen1,yen2,yen3,yen4,yen5,…,yen20 from TARGET x where not exists(select 1 form TARGET y where x.siten=y.siten and y.year=200604); ここからは、蛇足ですが・・ 9iからは、MERGE文が使えるので、インサートする条件、更新する条件が整理できるなら INSERT と UPDATE を一文で処理できる可能性もあります。 例えば、200501~200512を基に、200601~200612を作る。 既に存在すれば、値を更新し、無ければ登録する。 というとき、 merge into TARGET x using TARGET y on (x.SITEN=y.SITEN and x.YEAR=y.YEAR+100 and y.YEAR between 200501 and 200512) when matched then update set x.YEN1=y.YEN1,x.YEN2=y.YEN2,x.YEN3=y.YEN3,…,x.YEN20=y.YEN20 when not matched then insert (YEAR,SITEN,YEN1,YEN2,YEN3,…,YEN20) values(y.YEAR+100,y.YEN1,YEN2,YEN3,…,YEN20) ; テストしてないので、ちょっと怪しいSQLですが..こんな感じです。
関連するQ&A
- SQL UPDATE 文 GroupByの値を更新したい
SQLの UPDATE文について質問させていただきます。 テーブル内のデータを日付と時間で GroupBy して カウント求めています。 求めた値(カウント)を、日付をキーにして同じテーブル内のフィールドに更新するSQLを作成したいと考えています。 GroupByして、カウントを求めることはできるのですが、 どうしても、UPDATE文を実行させることができません。 この処理は、SQLで行うことはできるのでしょうか? 下記に、UPDATE前と後のテーブルデータを記載しています。 日付 時刻 20090101 0:00 20090101 0:00 20090102 0:00 20090102 0:00 20090102 1:00 20090103 2:00 ↓ 日付 時刻 カウント 20090101 0:00 2 20090101 0:00 2 20090102 0:00 2 20090102 0:00 2 20090102 1:00 1 20090103 2:00 1 よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- テーブル結合のSQL文について
はじめまして、よろしくお願いします。 テーブルA、B、Cから情報を取得し、下記のSELECTイメージを表示させたいのですが、 どのようなSQLを記述すれば良いのかわからず、困っております。 どなたかご教示頂けますでしょうか。 SELECTイメージ 日付 キー ------------ ------------- 9/1 AAAAA 9/1 CCCCC 9/2 AAAAA 9/2 CCCCC 9/3 AAAAA 9/3 BBBBB 9/3 CCCCC 9/4 AAAAA 9/4 BBBBB 9/4 CCCCC テーブルA 日付 キー ------------- ------------- 8/31 AAAAA 8/31 CCCCC テーブルB 日付 キー ------------ ------------- 9/1 AAAAA 9/3 BBBBB 9/4 CCCCC テーブルC 日付 ------------- ・ ・ ・ 8/31 9/1 9/2 9/3 9/4 9/5 9/6 ・ ・ ・
- 締切済み
- Oracle
- レコードが追加できない
SQL-Server2010を使用しています。 レコードを追加する際にキー項目が存在する場合は追加しないようなSQL文を作成しました。 追加するテーブルにレコードが1件以上あれば思ったとおりの処理となりますが、 1件も存在しない場合は追加できません。 下記がそのSQL文です。 原因と対策方法を教えて頂けませんでしょうか? INSERT INTO foo(商品コード, 商品名) SELECT DISTINCT 'ABC123' , 'りんご' FROM foo WHERE NOT EXISTS( SELECT * FROM foo WHERE 商品コード = 'ABC123' ) 以上です。 宜しくお願い致します。
- ベストアンサー
- SQL Server
- SQL*Loaderで既存のレコードの更新
SQL*Loaderで既存のレコードがあったらUpdate処理を行いたいのですが 「Oracle7 Server ユーティリティ」に SQL*Loaderは、既存レコードがNULL列であったとしてもレコードを更新しません。 既存の行を更新するには、次の手順を利用してください。 1.データを一時表にロードする 2.相関副問合わせを持つSQL言語のUPDATE文を使用する 3.一時表を削除する とありますが、上記の1~3が具体的にどうすれば良いのか分りません・・・ 1.データとは、テーブルのデータ?それともロードファイルのデータ?? 3.に削除とあるので、作成するのでしょうか?? 2・これはctlファイルに記述するでいいのでしょうか?? 記述の仕方は?? 3.ドロップコマンドはctlに記述でよろしいのでしょうか?? などなど・・ すみません、ご教授お願いできませんか??
- ベストアンサー
- Oracle
- 3つ以上の外部結合から抽出するSQL構文
次の3つのTABLEから期待する結果(結果を参照)を導きたいのですがJOIN等を使用しても期待と異なります。SQLを教えて下さい。結果は、SELECTでもVIEWでも構いません。一つのSQLでなくても構いません。 ●テーブル構成 テーブル名 - TB_A- -----TB_B--- ----TB_C---- ------ ------------- ------------- 列名 EMPNO EMPNO DATA1 EMPNO DATA2 レコード1 000001 000002 AAAAA 000001 AAAAA レコード2 000002 000002 BBBBB 000002 BBBBB レコード3 000003 000002 CCCCC 000003 CCCCC ●結果 列名 EMPNO DATA1 DATA2 レコード1 000001 ???????? AAAAA レコード2 000002 AAAAA BBBBB レコード3 000002 BBBBB ???????? レコード4 000002 CCCCC ???????? レコード5 000003 ???????? CCCCC
- 締切済み
- その他(データベース)
- レコード追加に要する時間について。
insert文でレコードを追加する際、すでにテーブルに登録されているレコードが多ければ多いほど、insert文でレコードを追加する時間は長くなるのですか?できればその理由もご存知な方ご教授おねがいします。 OSとDBのバージョンは以下です。 OS:Solaris8 DB:Oracle8
- ベストアンサー
- Oracle
- select insertで複数テーブルから値を取得したい
環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。
- ベストアンサー
- Oracle
- PHPでDBからデータを抽出してHTMLで表示する
クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上
- ベストアンサー
- HTML
- INSERT文のSELECT部分の更新
insert into selectについて教えてください。 あるテーブルからselectした値と、連続する値を 同時にinsertするする事はできますでしょうか? 使用DBはOracle9iです。 例えば、以下のようなテーブルがあった時に テーブルA カラム1 カラム2 カラム3 カラム4 この時に、カラム1,カラム2,カラム3を別のテーブルからselectし、 カラム4には「100001」から順に値を1ずつ増やしてながら セットしたい場合、1つのSQLで実行する事は可能でしょうか? ヒントなどいただけたらと思います。よろしくお願いします。
- 締切済み
- Oracle
- SQLServer Access(adp)から更新
SQLServer初心者です。 Access(adp)から、ストアドプロシージャを使ってSQLServer(2005)の テーブルを更新させる処理があります。(約9万行のCSVデータを読み込み) 内容としては1行ずつLoopさせて以下の処理を行っている感じです。 1、AテーブルにCSVファイルから取得したデータをINSERT 2、Aテーブルの同一キーがマッチしたBテーブルの2項目に対して、 CSVファイルの値を更新(Update) テスト環境では問題なく更新できていましたが、本番環境だと処理が異様に遅くなりました。 (1時間かかって12000件ほどしか更新されません) テーブル、インデックス、ストアドの中身も確認しましたが違いが見つけられず。 「SET ARITHABORT ON」の設定も入れてみましたがダメでした。 2のUpdate処理を外すと運用に耐えるくらいの速度になったので、Update部分が 問題なのだとは思うのですが・・。 UPDATE Bテーブル SET koumoku1=@csvkoumoku1,koumoku2=@csvkoumoku2 WHERE KEY=@csvkey ←csvkeyはAテーブルのキーになります サーバ環境と本番環境はコピーしているためまったく同じだとは思うのですが どこかほかに確認するところなどありますでしょうか。 よろしくお願いいたします。
- 締切済み
- SQL Server