Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

关于用IN的问题

Posted on 2008-08-12 14:23 Prayer 阅读(133) 评论(0)  编辑 收藏 引用 所属分类: 数据库,SQL
如果在SELECT里用了IN,  
  例如:select   *   from   abc   where   a1   in   (select   a1   from   ccc)  
  那么,在IN里SELECT语句是不是会自动运行很多次,还是只运行一次。  
  能说说这句的运行机制吗?

这个语句只运行一次,先返回select   a1   from   ccc的记录集,再比较abc.a1是不是在这个记录集里,效率不如:  
  select   *   from   abc   where   exists   (select   a1   from   ccc   where   ccc.a1=abc.a1)  

最好用  
  select   abc.*   from   abc,ccc   where   ccc.a1=abc.a1  

同意楼上   、   但是建议在子查询里   加上   去除重复项的子句。

select   abc.*   from   abc,ccc   where   ccc.a1   *=   abc.a1

NO.6   作者: Jameszht

如果ccc中的a1有重復可用  
  select   abc.*   from   abc,(select   distinct   a1   from   ccc)   c   where   c.a1=


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理