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');我不理解:怎么等价的问题而已! :(
哦,我知道了 你试试这个 select a.id from 用户表 as a join 用户购买表 as b on a.id=b.a_id where b.day<'2004-02-12'; 内连接就可以了 结果是有过购买记录并且最后购买时间小于2002-02-12
我觉得问题是没有子查询就不行吧!我要得是这样: select * from a where id not in (select a_id from b where b.day>'2002-02-12');除了那些在'2002-02-12'来的客户,其他的客户都是谁即可!当然能够再去掉那些从没来过的那就更完美了!
你说的这个确实不需要子查询,一般子查询是用left join来替代的,但这个确实可以了啊
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';楼上,你的意思是等价吗?
现在在mysql里遇到问题来了,用户购买表b里有个时间段day表示购买的时间,怎么得到从2004-02-12就没有购买的客户?
我想问的是:用户表 a 主键id,
用户购买表 b 主键id,用户字段(外键,连接表a)a_id,购买时间day,有个时间点:2004-02-12如何在mysql里得到:从2004-02-12就没有购买记录的客户(可以不记录从无购买的客户!)
这个问题,真是令人伤神,mysql4.0本来就不不支持子查询,不知道有没有高手能帮我实现?
只要能够实现!
select * from a where id not in (select a_id from b where day>'2002-02-12');就是找在'2002-02-12'之后没有购物记录的用户啊
从2002-02-12该客户就没有购买过,就没有来过!我想把这些没有购买的客户查出来!让我知道怎么去和这些客户交流一下,为什么他们不来了!是我的服务不好吗?^_^你说了,“就是选出购买记录在2002-02-12之后的用户”,和我说的不是一回事!
:(
你试试这个
select a.id from 用户表 as a join 用户购买表 as b on a.id=b.a_id where b.day<'2004-02-12';
内连接就可以了
结果是有过购买记录并且最后购买时间小于2002-02-12
select * from a where id not in (select a_id from b where b.day>'2002-02-12');除了那些在'2002-02-12'来的客户,其他的客户都是谁即可!当然能够再去掉那些从没来过的那就更完美了!
的等价与:select a.id from 用户表 as a join 用户购买表 as b on a.id=b.a_id where b.day<'2004-02-12';楼上,你的意思是等价吗?
http://community.csdn.net/Expert/topic/3974/3974565.xml?temp=.5632288上了!