- ベストアンサー
UPDATE文で複数列を更新したい
下記のデータ3つを旧から新へ、一度に更新するにはどうすればいいですか? HONKAN_DATA内 KAIGI_DATAを変更するとします。 旧 新 会議室 A01 会議室 A02 会議室 B01 会議室 B02 会議室 C01 会議室 C02 UPDATE HONKAN_DATA SET・・・ この続きをどう書いていけばいいか3つ同時に更新されるのでしょうか? 教えてください
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- UPDATE文で複数列を更新したい【再掲載】
データを勘違いしてたので、もう一度のせます。 下記のデータ3つを旧から新へ、一度に更新するにはどうすればいいですか? HONKAN_DATA内 KAIGI_DATAを変更するとします。 旧 新 会議室 6A 会議室 6H 会議室 7B 会議室 5Y 会議室 4C 会議室 9H UPDATE HONKAN_DATA SET・・・ この続きをどう書いていけば3つ同時に更新されるのでしょうか? 教えてください
- ベストアンサー
- MySQL
- UPDATE文でこのような更新はできますか?
(TBL_A) A1 A2 ----------- 1 100 2 200 3 300 4 400 5 500 (TBL_B) B1 B2 ----------- 1 100 3 300 4 400 上記のようなテーブルAとBがあったとして 次のようなUPDATE文を実行することはできますか? できない場合、SQL1発で更新する他の方法はありますでしょうか? UPDATE TBL_A A SET A.A1 = A.A1 + B.B1 A.A2 = A.A2 + B.B2 WHERE EXISTS (SELECT 'X' FROM TBL_B B WHERE A.A1=B.B1) 【更新後のTBL_A表】 A1 A2 ----------- 1 200 <= (*)更新される 2 200 3 600 <= (*)更新される 4 400 5 1000 <= (*)更新される 【やりたいこと】 TBL_A表のA2列のデータにTBL_B表のB2列のデータを加算したい。 その場合の更新条件として「A1がB1に存在している場合のみ」という条件を加えたいのです。 すいませんが、よろしくおねがいします。
- ベストアンサー
- Oracle
- 複雑なUPDATE文
少し複雑なUPDATEをしているのですが、うまくいかず困っています。 お知恵を拝借いただけると助かります。 使用バージョンはPostgresV7.3.4です。 tableA a |b |c -+-+- 1 | 1 | 1 (★) 1 | 0 | 1 1 | 0 | 2 2 | 1 | 0 2 | 0 | 1 3 | 1 | 1 (★) 3 | 0 | 1 3 | 0 | 2 b=1 and c=1 で一致する行を★行とする。 ★行のa列の値(上記の例だとa=1,a=3)をもつ行に対して 下記の条件◆でUPDATEを行う。 [条件◆] b=0 and c=1 [UPDATEの内容] 条件◆に一致したc列を3に更新する [理想の結果] tableA a |b |c -+-+- 1 | 1 | 1 1 | 0 | 3 ●更新 1 | 0 | 2 2 | 1 | 0 ←★にあてはまらないので更新されない 2 | 0 | 1 3 | 1 | 1 3 | 0 | 3 ●更新 3 | 0 | 2 ========================================== ★の条件を考えない場合は、下記予想します。 UPDATE tableA set c = 3 WHERE 条件◆ ★の条件を考えた時、どのような条件にすればよいかさっぱり分かりません。 ご協力下さい。 ==========================================
- ベストアンサー
- PostgreSQL
- 複雑なUPDATE文2
先に質問をさせていただき、1度は解決したものの再び行き詰ってしまいました。 UPDATEの際うまくいかず困っています。 お知恵を拝借いただけると助かります。 使用バージョンはPostgresV7.3.4です。 tableA a1|a2|b|c -+--+-+- 1 | 1 | 1| 1 (★) 1 | 1 | 0| 1 1 | 2 | 0| 1 2 | 2 | 1| 0 2 | 1 | 0| 1 3 | 2 | 1| 1 (★) 3 | 2 | 0| 1 3 | 1 | 0| 1 b=1 and c=1 で一致する行を★行とする。 ★行のa1列の値とa2列の値(上記の例だと(a1=1,a2=1)と(a1=3,a2=1))をもつ行に対して 下記の条件◆でUPDATEを行う。 [条件◆] b=0 and c=1 [UPDATEの内容] 条件◆に一致したc列を3に更新する [理想の結果] tableA a1|a2|b|c -+--+-+- 1 | 1 | 1| 1 1 | 1 | 0| 3 ←更新 1 | 2 | 0| 1 2 | 2 | 1| 0 2 | 1 | 0| 1 ←★にあてはまらないので更新されない 3 | 2 | 1| 1 3 | 2 | 0| 3 ←更新 3 | 1 | 0| 1 ←最下行 ========================================== UPDATE tableA set c = 3 WHERE 条件◆ and a1 in (select a1 from tableA where b=1 and c=1) and a2 in (select a1 from tableA where b=1 and c=1) このようなイメージなのですが、この場合、 最下行のc列も更新してしまいました。 (説明しずらいのですが、) a1とa2の条件は独立させるのでは無く、セットとして考えたいのですが、 方法が分りません。 ご協力お願いします。 ==========================================
- ベストアンサー
- PostgreSQL
- 1テーブル&複数レコードの更新に対して1度のupdate文での処理方法
1テーブル&複数レコードの更新に対して1度のupdate文での処理方法 Delphi2010+SQL SERVER 2005で開発しています。 update文で、 現在下のようにwhileで複数レコードに対して、 1回、1回、sqlを発行して、更新しています。 これを、一度のSQLの発行で処理できないものでしょうか? 更新テーブルは1つで、更新する項目も同じです。 更新するデータと、where句の条件が異なります。 もし可能なようでしたら、どうかご教授お願いします。 update table set A=1,B=2 where id=1 update table set A=2,B=3 where id=5 update table set A=9,B=99 where id=7 update table set A=5,B=10 where id=15 update table set A=1,B=10 where id=75
- ベストアンサー
- SQL Server
- updateで複数行更新したい
OracleのSQLについて質問があります。 UPDATE文を1度しか使わずに、抽出条件の異なるデータを複数個更新することは可能ですが? 例えば、 テーブル名:TEST カラム: A B C D UPDATE A B C D 100 010 350 300 → 100 010 200 250 100 020 350 000 → 100 020 200 280 という感じで更新したいのですが、どんなUPDATE文を組み立てればいいのか思いつきません。 なので、何かきっかけになるようなことでも構いませんので、教えてください。 よろしくお願いします。
- ベストアンサー
- Oracle
- Mysqlのupdate文
Mysql3.23.42+PHPで下記のようなテーブルで Field| Type ----+------------ a | int b | varchar c | varchar d | timestamp e | timestamp update文を実行すると、 例 update set b='あ',c='い',e=NULL where a='1'; dまでアッデートされてしまうのですが何ででしょう? 何か特別なことしなくてはいけないのでしょうか?
- ベストアンサー
- その他(データベース)
- Oracleのupdate文について
OracleでテーブルB、Cを結合し取得できた項目で、テーブルAを更新したいのですがSQLがわかりません。結合結果とテーブルAは1:1にはなりません。 件数が結合結果>テーブルAの時もあれば、その逆の場合もあります。また、複数項目を更新したいです。実行して考えてみたいのですが、明朝客先ですぐに実行しなければならず(テスト環境はあるので明日そこで一旦確認後、すぐに本番環境で実行)、現在移動中→ホテル泊のため余裕がありません。 ネットで下記を見つけたのですが、更新する項目に更新日時を追加したいのと、テーブルAとの紐付けやEXISTSのWHEREはテーブルBとC両方の項目に紐づけたいです。 また、テーブルAの更新条件に、テーブルB、Cにはないcolumn③に対する条件も追加したいです。 UPDATE [TABLE①] A SET (COLUMN①, COLUMN②) = ( SELECT B.COLUMN, C.COLUMN FROM [TABLE②] B, [TABLE③] C WHERE B.COLUMN = C.COLUMN AND B.COLUMN = A.COLUMN ) WHERE EXISTS ( SELECT 1 FROM [TABLE②] B2 WHERE B2.COLUMN = A.COLUMN) もろもろとわかりづらい説明&他力本願で心苦しいのですが、どなたか教えていただけないでしょうか?
- 締切済み
- Oracle
- UPDATE文(副問合せ?)について
うまく説明できないのですが、下記のようなテーブルがあります。 テーブル名:A 項目: A1 A2 A3 A4 AテーブルのA1項目に「5」がセットされているデータについて、 A2に123、A3に321をセットしたいのです。 うまくいかない例ですが、下記のようなイメージです。 UPDATE A set A2=123,A3=321 FROM (SELECT * FROM A WHERE A1 = '5') ちなみに下の書き方はダメです。 「SELECT * FROM A WHERE A1 = 5」の部分は、必ず使用し、変更不可です。 × UPDATE A set A2=123,A3=321 WHERE A1 IN(SELECT A1 FROM A WHERE A1 = 5) 変な質問ですいませんが、何か方法があるのでしょうか。 よろしくお願いします。
- 締切済み
- SQL Server
- UPDATEのCASE文で・・
SQLの独学をはじめて間もない素人です。 今case文を使って・・a_flg、b_flgを更新というコードを考えたのですが・・↓ UPDATE tm_results_payment SET a_flg = ( CASE WHEN b_flg=1 AND a_flg=1 THEN '0' END ) b_flg = ( CASE WHEN b_flg=1 AND a_flg=1 THEN '1' ELSE b_flg END ) CASE文は同じ条件です。値を2個とも変更したいので上の処理を考えました。 しかし、どうやら先に最初のCASE文でa_flgを0に変えてしまっているので、 次のCASE文では処理をしてくれません・・; 同時進行で値を更新する方法ってどうすればよいのでしょうか・・; よろしくお願いいたします。
- 締切済み
- MySQL