質問: オラクルではできるのにsqlserverではサブクエリーで複数キーを指定できない? サブクエリーで複数キーを指定したいです。例えば以下のようなsqlですが、 sql> > select * from テーブルa > where (key1,key2) in (select key1,key2 from テーブルb) このsqlはオラクルでは実行できますが、sqlserverでは文法エラーになってしまいます。sql server ではサブクエリーで複数キーを指定するのは不可能なのでしょうか?
回答: 質問の条件式は、sql92で規定された行値構成子(または行値式)と呼ばれます。 主要なrdbmsでは実装されていますが、sql serverは、なぜかsql server 2005でも実装されていません。 sql serverで実行する場合は、書き換えが必要です。 <書き換え例1> select * from tbla where exists (select 1 from tblb where tbla.key1=key1 and tbla.key2=key2) <書き換え例2> select distinct tbla.* from tbla inner join tblb on tbla.key1=tblb.key1 and tbla.key2=tblb.key2