首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

小白的有关问题:in和=的区别

2012-12-16 
小白的问题:in和的区别select *from stock where gid in (select gid from base) 和select *from stock,b

小白的问题:in和=的区别
select *  from stock where gid in (select gid from base) 和
select *  from stock,base where stock.gid=base.gid 
有什么区别了?
[最优解释]


select *  from stock,base where stock.gid=base.gid 
--这是2000以前的语法,相当于后来的
select * from stock inner join base on stock.gid=base.gid
select *  from stock where gid in (select gid from base)
--这个是嵌套子查询等于
select distinct * from stock join base on stock.gid=base.gid
--如果没有查询出来没有重复值的话就跟第二条语句一样的。

[其他解释]
比如一个集合  A{a,b,c,d,e,f}   一个字符 d
如果说:
一个字符d = A中的 d   --  这是一个元素对应一个元素
一个字符d in A            --  这是一个元素对应一个集合
[其他解释]
in 一对多
= 一对一

即:


= :符合条件的
in:在一定的范围内
[其他解释]
in 是多个。=是一个
[其他解释]
=的只能有一个值,in可以多个值,但是只能是一列,如果要多列,要改换exists
[其他解释]
可是这两条执行出来是一样的
[其他解释]
base表只有一条数据或者它的gid 重复。
[其他解释]
都说完了,我说 好吧
[其他解释]
in 是一对多的关系 相当于 or
 = 是一对一的关系

[其他解释]
一般 = 或 exists 要快于 in

[其他解释]
in 后面跟的子查询可能是多个值

用=是一一对应的关系
[其他解释]
exists 和not exists 查询结果是完全相反的,即便exists 和not exists查出来的是整合表的数据
in和not in查询结果有可能是表的一部分,因为in和not in都排除不了null列
可以研究下大数据量下,执行计划和IO
[其他解释]
where a=1
where a in(1,2,3,4,5)
[其他解释]
select *  from stock where gid in (select gid from base) 和
select *  from stock,base where stock.gid=base.gid 
有什么区别了? 

第2种速度更快

热点排行