0

Oracleで非常に高速に動作するクエリがあります。

field1およびfield2field3はすべて整数です

select * FROM MY_TABLE P WHERE   
USER_ID = 167 AND 
(field1,field2,field3) NOT IN 
( SELECT field1,field2,field3 FROM EXCLUSION_TABLE)

T / SQL(SQL Server 2008R2)に翻訳しました

select * FROM MY_TABLE P WHERE   
USER_ID = 167 AND 
(cast(field1 as varchar)+ ','+cast(field2 as varchar)+ ','+
cast(field3 as varchar)) 
NOT IN 
( SELECT cast(field1 as varchar)+ ','+cast(field2 as varchar)+ ','+
cast(field3 as    varchar) FROM EXCLUSION_TABLE)

誰かが私がそれを別の方法で行うことができる方法について何かアイデアを持っていますか?

ありがとうございました。

4

1 に答える 1

3

多分このようなもの:

select * 
FROM MY_TABLE P 
WHERE USER_ID = 167 
AND NOT EXISTS
(
    SELECT
        NULL
    FROM
        EXCLUSION_TABLE
    WHERE
        EXCLUSION_TABLE.field1=P.field1
        AND EXCLUSION_TABLE.field2=P.field2
        AND EXCLUSION_TABLE.field3=P.field3
)

オラクルでも同じことができます

于 2012-05-03T11:31:26.943 に答える