IN/Not IN 子选择的问题
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=40441

解决方案 »

  1.   

    有两个表格,table1和table2,两个表中有相同的字段name,  
    现想从table1中查出所有name字段的值不在tables2中name值的纪录  
     
    ---------------------------------------------------------------  
     
    select  *  from  table1  left  join  table2  on  table1.name<=>table2.name  
     
    ---------------------------------------------------------------  
     
    SELECT  Table1.*  FROM  Table1  LEFT  JOIN  Table2  ON  Table1.name  =  Table2.name  WHERE  Table2.name  IS  NULL;  
     
    >>>>  
     
    在MySQL中下列语句还不能工作:    
     
    查询:  
    SELECT  *  FROM  table1  WHERE  id  IN  (SELECT  id  FROM  table2);  
     
    可以被写成:  
     
    SELECT  table1.*  FROM  table1,table2  WHERE  table1.id=table2.id;  
     
    查询:    
    SELECT  *  FROM  table1  WHERE  id  NOT  IN  (SELECT  id  FROM  table2);  
    SELECT  *  FROM  table1  WHERE  NOT  EXISTS  (SELECT  id  FROM  table2  
                                                                                 WHERE  table1.id=table2.id);  
     
    可以被写成:  
     
    SELECT  table1.*  FROM  table1  LEFT  JOIN  table2  ON  table1.id=table2.id  
                                                                                 WHERE  table2.id  IS  NULL;