none
Oracleで動く構文なのですが、SQLServerではどのように書くのでしょうか?(Where句) RRS feed

  • 質問

  • Oracleで動作している構文なのですが、SQL Serverで実行したところエラーになりました。
    select * from Test where (column1, column2) =
    (select column1,column2 from Test where column4 = 5)

    SQL Serverではどのように書くのでしょうか?

    エラーは、最初のWhere のすぐ後ろのところです。

    環境は、SQLServer2005を使っています。
    2006年11月13日 7:57

回答

  • 古い Oracle の構文使ってますね。
    今は INNER JOIN を使うのが常道ですが。。。

    SELECT * FROM Test t1
    INNER JOIN Test t2 ON t1.column1 = t2.column1 AND t1.column2 = t2.column2
    WHERE t2.column4 = 5

    で、いいじゃない。

    2006年11月13日 9:50
  • 複雑な SQL を変更できないのであれば無理です。
    あきらめて、全面的な書き直しをお勧めします。

    2006年11月16日 10:13
  •  

    これでいいかもしれませんね

     

    Code Snippet

    update Test set columnx='1'
    where exists(select 1 from (複雑なSQL。(変更できない)) wk
                  where wk.column1 = column1
                    and wk.column2 = column2)

     

     

     

    2008年10月31日 10:29

すべての返信

  • 古い Oracle の構文使ってますね。
    今は INNER JOIN を使うのが常道ですが。。。

    SELECT * FROM Test t1
    INNER JOIN Test t2 ON t1.column1 = t2.column1 AND t1.column2 = t2.column2
    WHERE t2.column4 = 5

    で、いいじゃない。

    2006年11月13日 9:50
  • ご回答ありがとうございます。

    でもちょっと聞き方がまずかったです。

    update Test set columnx='1' where (column1, column2) =
    (複雑なSQL。(変更できない))


    実際はこんなことがしたいのですが、
    SQL Serverではwhere句にカラムを複数指定することはできないのでしょうか。
    2006年11月16日 0:05
  • 複雑な SQL を変更できないのであれば無理です。
    あきらめて、全面的な書き直しをお勧めします。

    2006年11月16日 10:13
  • やはり無理なんですね。ありがとうございました。
    2006年11月21日 4:02
  • たけたけ さん、

     

    こんにちは!

    フォーラム オペレーターの服部 清次です。

    たけたけ さんがこちらの質問を投稿されてから少し時間が経ちましたが、今回、おがわみつぎ さんの回答が役に立ったようですので、こちらの情報を他の方々に共有していただくためにも、私の方で回答チェックを付けさせていただきました。

     

    また何か質問がありましたら、TechNet Forum をご利用ください。

    よろしくお願いします。

    それでは、また!

     

    _____________________________________________

    マイクロソフト株式会社 フォーラム オペレータ 服部 清次

    2008年10月31日 1:27
  •  

    これでいいかもしれませんね

     

    Code Snippet

    update Test set columnx='1'
    where exists(select 1 from (複雑なSQL。(変更できない)) wk
                  where wk.column1 = column1
                    and wk.column2 = column2)

     

     

     

    2008年10月31日 10:29