有两个表格,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;  

解决方案 »

  1.   

    非常感谢shuixin13(犬犬(心帆)
    查询:  
    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  IN  (SELECT  id  FROM  table2 where condition); 
    那该怎么改呢? 
      

  2.   

    SELECT  table1.*  FROM  table1  
          LEFT  JOIN  table2  ON  table1.id=table2.id
          WHERE  table2.id = 'condition';
      

  3.   

    呵呵,当然还可以
    SELECT  table1.*  FROM  table1,table2  WHERE  (table1.id=table2.id) AND (table2.id = 'condition');