SQL语句:如果将“IN”改成“JOIN”的形式?SQL语句如下,如果改成JOIN的形式?SELECT

FROM 
SpecialWord
WHERE 
CategoryID NOT IN
( SELECT 
f_field_category_id  
      FROM 
t_im_field_mas 
  WHERE
f_field_customer_id = 'WYB00002' AND
f_field_form_id ='0002'
)

解决方案 »

  1.   

    SELECT
        a.* 
    FROM 
        SpecialWord a
    WHERE 
        not exists(SELECT 
    1
              FROM 
     t_im_field_mas 
          WHERE
                       a.CategoryID=f_field_category_id 
                       and
     f_field_customer_id = 'WYB00002' 
                       and
     f_field_form_id ='0002')
      

  2.   

    用not exists可能效率会高一些:SELECT a.* FROM SpecialWord a WHERE not exists(SELECT 1 FROM t_im_field_mas WHERE a.CategoryID=f_field_category_id and f_field_customer_id = 'WYB00002' and f_field_form_id ='0002')
      

  3.   

    SELECT * FROM  SpecialWord
    WHERE  not exists  (SELECT 1  FROM t_im_field_mas  WHERE CategoryID=f_field_category_id and f_field_customer_id = 'WYB00002' AND f_field_form_id ='0002')
      

  4.   

    in 、 not exists 、join 那个效率更高些阿?
      

  5.   

    select a.*
    from syepcialword a left join t_im_field_mas b
    on a.CategoryID=b.f_field_category_id
    and b.f_field_customer_id='WYB00002'
    and b.f_field_form_id ='0002'
    where b.f_field_category_id is null
      

  6.   

    --???
    SELECT
    a.* 
    FROM 
    SpecialWord a
    inner join 
    ( SELECT 
    f_field_category_id  
          FROM 
    t_im_field_mas 
      WHERE
    f_field_customer_id = 'WYB00002' AND
    f_field_form_id ='0002'
    ) b 
    on a.CategoryID=b.f_field_category_id
      

  7.   

    与这样的联结相比,或许Exists效率更好具体还是要看表本身的设计
      

  8.   

    in 、 not exists 、join 那个效率更高些阿?
      

  9.   

    在这种情况下,应该是join效率最差。
      

  10.   

    SELECT a.* FROM SpecialWord a
      LEFT OUTER JOIN t_im_field_mas b ON
      a.CategoryID = b.f_field_category_id AND
      b.f_field_customer_id = 'WYB00002' AND
      b.f_field_form_id ='0002'