【Transact-SQL】IN句で複数列の条件を指定したい Transact-SQL(SQL Server) 2023.02.172023.08.04 この記事は約2分で読めます。 応用コードシリーズになります。 今回はSQL構文の「IN句」を便利に使う方法です。主に復号主キーのテーブルを絞る際に、すべての主キーで絞りこむといった使い方が予想されます。 目次 目次.通常の使用方法.やり方.コード例. 目次. 通常の使用方法. IN句は1列での比較絞り込みしかできません。 下記の構文はIN句を通常使用したときのコード例になります。 SELECT ID ,NAMEFROM EMPLOYEEWHERE ID IN ( SELECT WHERE_FARMER.WHERE_ID FROM FARMER ) やり方. IN句を普通の使い方をしていては、複数列での比較は不可能です。 そのため、列①と列②の境目に目印となる区切り文字列を挿入し結合させ、IN句内の副問合せ部分も同様の構造にすることで、疑似的に複列での比較を可能としています。 CONVERT(varchar, [カラム名1]) + [区切り文字列] + CONVERT(varchar, [カラム名2])IN( SELECT CONVERT(varchar, [条件1]) + [区切り文字列] + CONVERT(varchar, [条件2]) FROM [条件用テーブル] WHERE [絞り込み条件]) コード例. コード例では、列「ID」と列「NAME」を区切り文字列「@」を挟み結合させ、IN句内でも同じ構造とすることで、列「ID」と列「NAME」が両方一致しないとヒットしないというIN句でANDを実現する構文となっています。 SELECT ID ,NAMEFROM EMPLOYEEWHERE CONVERT(varchar, ID) + ‘@’ + CONVERT(varchar, NAME) IN ( SELECT CONVERT(varchar, ID) + ‘@’ + CONVERT(varchar, NAME) FROM FARMER WHERE VOLUME > 100 )