select * from quyu qy where exists (select 2 from chanping cp where cp.id=qy.cp)
quyu 表 cp 和 chanping 表 id 没有设置外键关联。请问这段语句怎样理解?写得越详细越好,谢谢了。

解决方案 »

  1.   

    取出表quyu 的所有信息,如果quyu 表有 字段cp 等于 chanping 中的id值的话
    也就是说取出 quyu 中属于chanping 的信息
      

  2.   

    取出quyu表中(cp和chanping表中id相等)的数据
      

  3.   

    取出quyu表中(cp和chanping表中id相等)的数据
      

  4.   

    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的数据集合了。
      

  5.   

    首先谢谢各位的回答。开始的代码为:
    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 为主键。可得到相同的结果,请问什么时候用前一个语句,什么时候用后一个语句?
      

  6.   

    in中如果数据量比较大的时候用exits效率比in的效率高得多。如果数据量少考虑用in
      

  7.   


    exists与in的效率高低不是绝对的,还是用大量的数据测试一下吧。