select * from quyu qy where exists (select 2 from chanping cp where cp.id=qy.cp)解释: 从qy表中查询出在cp表中存在qy.cp=cp.id的数据,也就是说,假如cp.id=qy.cp有满足的记录为Rdataset(存在id,这个id和qy.cp相等),那qy表就返回与Rdataset匹配id的数据集合了。
首先谢谢各位的回答。开始的代码为: select * from quyu qy where exists (select 2 from chanping cp where cp.id=qy.cp)这段代码按下面的方式写 select * from quyu qy where qu.cp in (select id from chanping) --chanping 表 id 为主键。可得到相同的结果,请问什么时候用前一个语句,什么时候用后一个语句?
也就是说取出 quyu 中属于chanping 的信息
从qy表中查询出在cp表中存在qy.cp=cp.id的数据,也就是说,假如cp.id=qy.cp有满足的记录为Rdataset(存在id,这个id和qy.cp相等),那qy表就返回与Rdataset匹配id的数据集合了。
select * from quyu qy where exists (select 2 from chanping cp where cp.id=qy.cp)这段代码按下面的方式写
select * from quyu qy where qu.cp in (select id from chanping) --chanping 表 id 为主键。可得到相同的结果,请问什么时候用前一个语句,什么时候用后一个语句?
exists与in的效率高低不是绝对的,还是用大量的数据测试一下吧。