mssql sqlserver sql脚本中使用in关键字和join关键字的区别


摘要:
下文讲述sql脚本中使用in和join关键字的用法区别,如下所示:
实验环境:sql server 2008 R2


下文将使用举例的方式讲述in和join关键字的用法
1.创建数据表:
CREATE TABLE maomao365A
(
keyId INT ,
qty INT NOT NULL
)

插入数据:
insert into maomao365A values
(1,90),(2,93),(3,99)

—通过in关键字查询数据
select * from maomao365A where keyId in (1,1,1,1)

但是查询出来的数据,只有一条!
keyId qty
— —
1 90

—测试2,新建临时表,并插入重复数据四个1

— 创建临时表
CREATE TABLE #tmp
(
keyId INT
)

— 插入四个1的记录
insert into #tmp values (1),(1),(1),(1)

–使用join查询
select a.* from maomao365A a, #tmp b where a.keyId = b.keyId

—展示数据,有四条
keyId qty
— —
1 90
1 90
1 90
1 90

–如果我们使用in关键字访问,则只会显示一条数据
select t.* from maomao365A a where a.keyId in( select b.keyId from #tmp b )

—展示一条符合条件的数据
keyId qty
— —
1 90


从以上的实验,我们看出in关键字操作中,只展示出源表的数据
使用join关键字进行两表关联,则会进行笛卡尔积计算,可能会出现重复数据