select a.id from 用户表 as a left join 用户购买表 as b on a.id=b.a_id where b.a_id is null;

解决方案 »

  1.   

    谢谢!
    现在在mysql里遇到问题来了,用户购买表b里有个时间段day表示购买的时间,怎么得到从2004-02-12就没有购买的客户?
      

  2.   

    不好意思:
    我想问的是:用户表 a     主键id,
    用户购买表 b 主键id,用户字段(外键,连接表a)a_id,购买时间day,有个时间点:2004-02-12如何在mysql里得到:从2004-02-12就没有购买记录的客户(可以不记录从无购买的客户!)
      

  3.   

    其实这个问题需要用到我提的第一个问题,但是第一个问题的答案本身效率不高,我其实也想到了,只是效率不高,好多优化的都这样说!现在如果实现:从2004-02-12就没有购买记录的客户?
    这个问题,真是令人伤神,mysql4.0本来就不不支持子查询,不知道有没有高手能帮我实现?
    只要能够实现!
      

  4.   

    select a.id from 用户表 as a left join 用户购买表 as b on a.id=b.a_id where b.day>'2004-02-12' and b.a_id is null;
      

  5.   

    老大:b.day>'2004-02-12' 不是表示购买记录是 2004-02-12以上的吗?我想 要: 2004-02-12以后就没有购买过的客户!
      

  6.   

    对啊!这个语句等价于
    select * from a where id not in (select a_id from b where day>'2002-02-12');就是找在'2002-02-12'之后没有购物记录的用户啊
      

  7.   

    我的sql理解太差了:从2004-02-12就没有购买记录的用户,不包含从无购买的客户!那么这样该怎么写?
      

  8.   

    to:jFresH_MaN(听说距离产生美,所以我将离开你!) ( ) 信誉:100 "上面的语句就是选出购买记录在2002-02-12之后的用户,如果是没有购买记录的用户在第一个条件已经过滤了!"我的意思:
    从2002-02-12该客户就没有购买过,就没有来过!我想把这些没有购买的客户查出来!让我知道怎么去和这些客户交流一下,为什么他们不来了!是我的服务不好吗?^_^你说了,“就是选出购买记录在2002-02-12之后的用户”,和我说的不是一回事!
      

  9.   

    select a.id from 用户表 as a left join 用户购买表 as b on a.id=b.a_id where b.day>'2004-02-12' and b.a_id is null;select * from a where id not in (select a_id from b where day>'2002-02-12');我不理解:怎么等价的问题而已!
    :(
      

  10.   

    哦,我知道了
    你试试这个
    select a.id from 用户表 as a join 用户购买表 as b on a.id=b.a_id where b.day<'2004-02-12';
    内连接就可以了
    结果是有过购买记录并且最后购买时间小于2002-02-12
      

  11.   

    我觉得问题是没有子查询就不行吧!我要得是这样:
    select * from a where id not in (select a_id from b where b.day>'2002-02-12');除了那些在'2002-02-12'来的客户,其他的客户都是谁即可!当然能够再去掉那些从没来过的那就更完美了!
      

  12.   

    你说的这个确实不需要子查询,一般子查询是用left join来替代的,但这个确实可以了啊
      

  13.   

    select * from a where id not in (select a_id from b where b.day>'2002-02-12');
    的等价与:select a.id from 用户表 as a join 用户购买表 as b on a.id=b.a_id where b.day<'2004-02-12';楼上,你的意思是等价吗?
      

  14.   

    老大,我们的帖子太长了,我把他转到
    http://community.csdn.net/Expert/topic/3974/3974565.xml?temp=.5632288上了!