応用コードシリーズになります。
今回はSQL構文の「IN句」を便利に使う方法です。
主に復号主キーのテーブルを絞る際に、すべての主キーで絞りこむといった使い方が予想されます。
通常の使用方法.
IN句は1列での比較絞り込みしかできません。
下記の構文はIN句を通常使用したときのコード例になります。
SELECT
    ID
    ,NAME
FROM
    EMPLOYEE
WHERE
    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
    ,NAME
FROM
    EMPLOYEE
WHERE
    CONVERT(varchar, ID) + ‘@’ + CONVERT(varchar, NAME)
    IN
    (
        SELECT
            CONVERT(varchar, ID) + ‘@’ 
             + CONVERT(varchar, NAME)
        FROM
            FARMER
        WHERE
            VOLUME > 100
    )
 
 
