- ベストアンサー
updateで
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いきなり出てきたtable_Bが問題ではないかと。 table_Aとtable_BのAddが同じで、かつtable_Bのname=3の条件であれば、 Update table_A Set name=2 Where Add In ( Select Add From table_B Where name=3 ); のような記述になります。
その他の回答 (1)
- yamada_g
- ベストアンサー率68% (258/374)
条件が二つだからエラーになるのではなく、UPDATE文のどこにもtable_Bが出てこないので table_Bを参照することができないからエラーになっているのですよね。 以下のようにしてはどうでしょうか。 UPDATE table_A a SET a.name = 2 WHERE EXISTS ( SELECT * FROM table_B b WHERE a.Add = b.Add AND b.name = 3);
関連するQ&A
- SQLserverでのUPDATE文について
SQLserverで下記のようにテーブルがある場合、 TABLE_Bの単価をTABLE_Aの単価にセットしたい場合、 どのようにUPDATE文を記述すればよいでしょうか? TABLE_A 商品 色 単価 数量 備考 TABLE_B 商品 色 単価 条件:商品と色が一致するもの TABLE_Bには重複データは無いものとする。 クエリーアナライザーで下記のように記述すると エラー「列名が無効です」となりました。 UPDATE TABLE_A SET TABLE_A.単価 = (select TABLE_B.単価 from TABLE_B where TABLE_A.商品 = TABLE_B.商品 and TABLE_A.色 = TABLE_B.色) どのような記述をすれば良いのでしょうか?
- ベストアンサー
- SQL Server
- 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可能でしょうか。
一発でUPDATEできるでしょうか? A_TABLEとB_TABLEの2テーブルがあります。 上記2テーブルの結合条件は以下のとおりです。 A_TABLE.BOE = B_TABLE.BOE A_TABLEの列KEを更新したいです。 更新の条件はB_TABLE.HANA <= 100のものです。 次のsqlはだめでした。 UPDATE A_TABLE SET KE = 1 WHERE B_TABLE.HANA <= 100 AND A_TABLE.BOE = B_TABLE.BOE
- 締切済み
- Oracle
- 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 2回の整合性
MySQL 3.23.38 on Redhatです。 PHP4.2から、mysql_queryでsqlを送っています。 同じテーブルに、UPDATEを2回連続で行うと、 2回目で「0」を返して、整合性が取れません。 UPDATE table_name SET Note = REPLACE(Note,'<NEW>','') WHERE id = 1 UPDATE table_name SET Note = CONCAT(Note,'<NEW>') WHERE id = 1 見たいな感じです。 どうも2回目のUPDATEのCONCATの中のNoteが、「0」を返しています。 テーブルをロックしても、問題が解決されませんでした。 なにか良い方法があれば、教えてください。
- 締切済み
- その他(データベース)
- 複数フィールドの条件について
SQL文について教えてください。 oracle,mysqlでは、下記の条件分 where (fieldA,fieldB) in (select fieldA,fieldB from TABLE_NAME) と言った条件を記載可能なのですが、SQLServer ではエラーになってしまいます。 違った構文があるのでしょうか?よろしくお願いします。 具体的にやっているSQLは update TABLE_NAME set FIELD_NAME='1' where (FIELDA,FIELDB) in (select FIELDA,FIELDB from TABLE_NAME2 where FIELDC='1')
- ベストアンサー
- SQL Server
- 複数テーブルのUPDATE
タイトルの通り、複数テーブルのUPDATEを行いたいと思っています。 私なりには、以下のようなコードでテーブルを作成しようとしましたが、作成できませんでした。 エラー内容としては、 update table_1, table_2 SET のtable_1, が間違ってます的なエラーでした。 update table_1, table_2 SET table_1.updatetime=getdate(), WHERE table_1.SeqNo = table_2.SeqNo AND table_1.SeqNo = @SeqNo 以上、緊急の内容であったため、十分調べていない点があるかもしれませんが、何卒、ご存知の方ご教授お願い致します。
- ベストアンサー
- SQL Server
- SQLのUPDATEで文字列の1桁目を置換えたい。
更新SQLを以下のように作ってみましたが、DBのレコードの文字列の1ケタ目を更新できない。 例) UPDATE テーブル名 SET STUFF(A-CH,1,1,'1') WHERE B-CH = '1' AND C-CH <> B-CH AND A-CH > ’099999’ ※WHERE以降の条件に該当するものに対し、Aテーブルの1ケタ目を更新したいのですが うまくいきません。 お願いします。
- 締切済み
- SQL Server
- ACCESS2002のupdateの副問合せについて教えてください
ひとつのテーブルの情報を、もうひとつのテーブルに反映させられなくて困っています。 おそらくupdateの副問合せの書き方が悪いと思うのですが、どこが悪いのか分かりません。 access2002 VBAで、同じフィールド構成を持つ2つのテーブルがあります。 TABLE_A -------------------------- |P_Key | Field1 | Fieled2| +------+--------+--------+ |111111|AAAA|BBBB| |222222|CCCC|DDDD| |333333|EEEE|FFFF| |444444|GGGG|HHHH| -------------------------- TABLE_B -------------------------- |P_Key | Field1 | Fieled2| +------+--------+--------+ |222222|ZZZZ|YYYY| |333333|XXXX|WWWW| -------------------------- このうち、ひとつのテーブル(TABLE_A)のField1 と Field2 の値を もうひとつのテーブル(TABLE_B)のField1 と Field2 の値に変更したいのです。 条件は、P_Keyが同一のレコード同士です。 実行結果は以下のようにしたいのです。 TABLE_A (TABLE_Bは更新しないため変更無し) -------------------------- |P_Key | Field1 | Fieled2| +------+--------+--------+ |111111|AAAA|BBBB| |222222|ZZZZ|YYYY| |333333|XXXX|WWWW| |444444|GGGG|HHHH| -------------------------- VBAでupdateのSQLを書いているのですが、うまくいきません。 以下のSQLではDMLが正しくないのエラーになってしまいます。 (すみません。正式なエラーメッセージは失念しました) update TABLE_A set( TABLE_A.Field1,TABLE_A.Field2 ) = ( select TABLE_B.Field1,TABLE_B.Field2 from TABLE_B where TABLE_A.P_Key = TABLE_B.P_Key ); テーブル名に別名をつけたりしても同様にDMLが正しくないと怒られます。 質問は、以下の2つです。 1.上記更新は、ひとつのupdateのSQLで可能でしょうか? それともTABLE_B を Selectでまわして、TABLE_Aのレコードを一行ずつ 更新していく必要があるのでしょうか? 2.1.が可能の場合、私の書いたSQLについてご助言をいただけませんでしょうか? もしご存知の方おられましたら、ご教示をお願いできませんでしょうか? 以上です
- ベストアンサー
- その他(データベース)
- update文に条件をつける場合
update文に条件をつける場合 初心者です。よろしくお願いします。 update TABLE set HOGE = replace(HOGE,'文章','ブンショウ') こちらのupdate文にもう一つ条件をつけたいのですが、WHERE句をいれるとエラーがでてしまいます。 update TABLE set HOGE WHERE XXX = "YYY" = replace(HOGE,'文章','ブンショウ') update TABLE set HOGE WHERE XXX = "YYY" AND replace(HOGE,'文章','ブンショウ') エラーがでてしまいます、、、、WHERE XXX = "YYY"のような条件をだしたい場合はどのようにしたら良いでしょうか。 よろしくお願いします。m(_ _)m
- ベストアンサー
- MySQL
お礼
上手くなりました。ありがとうございました。