jFresH_MaN(听说距离产生美,所以我将离开你!)到哪里了呢?

解决方案 »

  1.   

    换一个 4.1以上版本的mysql,就支持子查询了
      

  2.   

    查询:  
    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;  
     
      

  3.   

    shuixin13(犬犬(心帆)) 说的是经典解决方法 , 非常赞同!
      

  4.   

    to:shuixin13(犬犬(心帆)) ( ) 信誉:286 
    非常佩服!select * from a where id not in (select a_id from b where b.day>'2004-02-12');
    怎么办呢?
      

  5.   

    我要重新建立一个表table2,把select a_id from b where b.day>'2004-02-12'的结果insert进去吗?然后再
    SELECT  table1.*  FROM  table1  LEFT  JOIN  table2  ON  table1.id=table2.id  
    WHERE  table2.id  IS  NULL;
      

  6.   

    试试这个
    select a.* from a left join b on a.id = b.a_id where b.a_id is NULL and b.day>'2004-02-12';
      

  7.   

    to:seakingx(亚龙湾) ( ) 信誉:101 
    没有结果!select a.* from a left join b on a.id = b.a_id where b.a_id is NULL and b.day>'2004-02-12';他的意思是要求连接后b表后,b表的a_id为空,又要 day 大于2004-02-12,
    我需要:day大于2004-02-12的所有a_id,然后在a表里去掉这些a_id!
    由于子查询是2个操作步骤,而连接想通过一步得到结果!
    虽然shuixin13(犬犬(心帆)) ( ) 信誉:286  2005-4-29 11:33:07  得分: 0  
    提供里一个解决思路,但是目前看有时候两步并为一步的捷径是行不通的!要是新建几个表create table select * 语法,看来在实际应用中(我是把我的问题简化了)需要新建2个表,真的效率不高,不过算是好的!只是每次都要建立这两个表!如果用java语言调用取出的方法,需要用到in(id1,id2,id3,……)关键字,我是很不喜欢,因为我的id很多,以后还有暴涨的趋势!mysql 要是有视图改多好!
      

  8.   

    mysql的一些对中文的排序有问题,我不敢用的!
    还有password的验证的几个问题!比如:mysql4.1就有一些问题,所以对5.0我一直敬而远之!
    更主要的恐怕是由于原来项目用的是4.0的关系,我不知道哪里会出问题!