mssql sqlserver “select * from tableA,tableB” 连接类型查询


摘要:
下文通过举例的方式探究select * from 多表查询的连接类型


 ---基础表及基础数据准备
create table testA
(keyId int identity,
info varchar(30))
go
create table testB
(keyId int identity,
info varchar(30))
go
insert into testA(info)values
(N'sqlblog'),(N'sql博客系列')
insert into testB(info)values
(N'猫猫小屋'),(N'猫猫教程')
go
 
---未加任何条件,等价于全连接
select * from testA,testB  
---等价于
select * from testA full join testB  on 1=1 

select * from testA,testB where testA.keyId = testB.keyId 
---等价于内连接
select * from testA inner join testB  on testA.keyId = testB.keyid 

 go
 truncate table testA
 drop     table testA
 truncate table testB


注意事项:
sql server数据库不建议使用select * from tableA,tableB 写法
因为上面的写法本质为查询两张表,如果加上where条件则变为似内连接模式,故这种写法拥有太多的不确定性。
建议使用连接改写相应的select * from 多表的sql脚本