- ベストアンサー
複数フィールドの条件について
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')
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
noname#22222
回答No.5
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.4
noname#22222
回答No.3
noname#22222
回答No.1
お礼
レスありがとうございます。 >(列1,列2) in(値1,値2)」という条件は、行値式または行値構成子と呼ばれますが 行値式と言うのですね、知りませんでした。これも新しい発見です。ありがとうございます。 ご指示頂いた構文で問題なく出来ましたありがとうございます。 ここで、発見が2つ、existsは、値が存在するとき TRUEを返すとなっているので、update文は一件一件に対して、select文を発行しているのですね。 納得!!って感じです。 もう一つ、update文にfrom句が書けるのですね。 おぉ~って感じでした。なので、この構文もいけるのか?試してみました。 update TABLE_NAME set FIELD_NAME='1' from TABLE_NAME as x inner join TABLE_NAME2 as y on (x.FIELDA=y.FIELDA and x.FIELDB=y.FIELDB) where y.FIELDC='1' 結果上手く行ってそうです。。 from句が使えるのであれば、かなり幅が広がりました。ありがとうございました。