0

我有一个在 Oracle 上运行非常快的查询。

field1field2都是field3整数

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
)

你可以在 oracle 中做同样的事情

于 2012-05-03T11:31:26.943 回答