SELECT id, subid 
FROM main_table 
WHERE (id  NOT IN ( SELECT id FROM log_table ))
   and (subid not in( SELECT subid FROM log_table))

解决方案 »

  1.   

    SELECT a.id, a.subid FROM main_table a left join log_table b on 
    a.id=b.id and a.subid=b.subid and b.id is null
      

  2.   

    不对! 试试看:main_table     log_table
    1     1         1     1
    1     2         2     2
    2     1
    2     2
      

  3.   

    SELECT id, subid FROM main_table WHERE right('0000000000',cast(id as char),10)+ right('0000000000',cast(subid as char),10)
              NOT IN ( SELECT right('0000000000',cast(id as char),10)+ right('0000000000',cast(subid as char),10) FROM log_table ) 
      

  4.   

    是字符型的话还可以:
    SELECT id, subid FROM main_table WHERE id+subid
              NOT IN ( SELECT id+subid FROM log_table )
      

  5.   

    嘻嘻!写得玩:
    SELECT id, subid FROM main_table WHERE cast(id as varchar(10))+subid
        NOT IN ( SELECT cast(id as varchar(10))+subid FROM log_table )
      

  6.   

    把两个id的集合运算分解成用and 连接的两个in(或not in) 条件
      

  7.   

    TO:pengdali(大力) 
    嘻嘻!写得玩:
    SELECT id, subid FROM main_table WHERE cast(id as varchar(10))+subid
        NOT IN ( SELECT cast(id as varchar(10))+subid FROM log_table )
    这样写是有可能会出现问题的。

    Id=45 subid=12时 
    可以组成
    4,512
    45,12
    451,2
      

  8.   

    这样可以了
    SELECT id, subid FROM main_table WHERE cast(id as char(10))+subid
        NOT IN ( SELECT cast(id as char(10))+subid FROM log_table )
      

  9.   


    Id=45 subid=12时 
    可以组成
    4  ,512
    45 ,12
    451,2
      

  10.   

    SELECT main_table.id, main_table.subid
    FROM main_table
    WHERE main_table.id != log_table.id  AND
          main_table.subid != log_table.subid
    这样比较简洁明了,你也可以用IN来写SELECT main_table.id, main_table.subid
    FROM main_table
    WHERE main_table.id NOT IN
          (SELECT log_table.id
           FROM log_table
           WHERE main_table.subid NOT IN
                 (SELECT log_table.subid
                  FROM log_table));
      

  11.   

    select id from a
    where not exists(select * from b)
      

  12.   

    select * from main_table  where not exists (select 1 from log_table where log_table.id = main_table.id and log_table.subid = main_table.subid )