>>Hi,
>>
>>What is a better practice and more efficient when using a derived table in a SQL Select:
>>
>>
>>select Table1.* T1 where exists (select * from Table2 T2 where T1.pk_fld = T2.pk_fld and T2.fld2 = '123')
>>
>>
>>vs
>>
>>
>>select Table1.* T1 where T1.pk_fld in (select pk_fld from Table2 T2 where T1.pk_fld = T2.pk_fld and T2.fld2 = '123')
>>
>>
>>TIA
>
>I prefer using EXISTS because of the possible NULL problem with IN syntax.
>
>BTW, your IN is not correct. You don't need to use correlated fields in IN condition, e.g. this would be correct:
>
>
>select Table1.* T1 where T1.pk_fld in (select pk_fld from Table2 T2 where T2.fld2 = '123')
>
Thank you.
In terms of correcting my syntax, are you saying that the derived query will automatically only use records of PK_FLD equal to PK_FLD in Table1?
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham