日度归档:2018年8月4日

mssql sqlserver “select 1 from tableName” 脚本功能说明


摘要:
下文讲述select 1 from tableName查询脚本的相关说明



一、select 1 from tableName功能说明:

select 1 from tableName:
功能:返回所有行记录,显示列数值为1
功能同select * from tableName一致,都是展示所有行数据;

二、select 1 from tableName应用场景:

常应用于where 条件判断是否存在相关记录集的应用,如:
if exists(select 1 from tableName where [条件])
begin
print ‘相关写法!’
end

mssql sqlserver left join 返回比左表行数多的记录说明


摘要:
下文详细举例说明sqlserver left join 的用法简介


  create table A(keyId int,infoA varchar(10))
  create table B(keyId int,infoB varchar(10))
  go
  insert into A(keyId,infoA)values(1,'A'),(2,'b');
  insert into B(keyId,infoB)values(1,'AA'),(1,'BB');
  
  select * from A left join B on A.keyId = B.keyId 
  ---------输出------------
  keyId,infoA,keyId,infoB 
  1 A 1 AA
  1 A 1 BB
  2 b null null
  ---表A和表B存在 表A中的keyId对应表B中的多个keyId
  由于表A中字段同表B中关联的字段依次进行笛卡尔集计算,返回A表所有记录乘以表B所有记录
   go
  drop table A
  drop table B  

mssql sqlserver 应避免select * from tableA,tableB的查询写法


摘要:
下文讲述select * from tableA,tableB写法说明,如下所示:


select * from tableA,tableB 查询方式简介:
select * from tableA,tableB类似于查询两张表
此种查询等同于查询tableA 和查询tableB具有一样的效果。
例:

   select * from tableA,tableB where 
   tableA.keyId =100 and tableB.keyId =10 
   ---此种查询对tableA tableB 都做了相关条件限制,此处无法看出相应的问题来
   ---如果我们未输入相应的查询条件:
   select * from tableA,tableB 
    ---以上sql脚本将会查询出tableA, tableB表中所有的数据。
   select * from tableA,tableB where tableA.keyId = tableB.keyId 
   --等同于
   select  * from tableA inner join tableB on tableA.keyId = tableB.keyId 


注意事项:
select * from tableA,tableB写法只适用于sqlserver数据库,不能通行于其它数据,所以应该尽量避免在sql脚本中采用这种写法。