日度归档:2018年7月28日

mssql sqlserver 视图中使用order by 的方法简介


摘要:
今天在视图编写中,在表连接后面加入order by 后,运行视图,提示
“除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。”
下文将讲述一种变相的实现视图中使用order by ,通过此方法可以使视图支持order by 关键字,打破视图中不可使用order by关键字的传说,如下所示:
实验环境:sqlserver 2008 R2


--例:
    create table test(keyId int identity, info varchar(20))
   go
   insert into test(info)values('a'),('b'),('c'),('d')
 go 
  create view vw_test 
  as 
   select * from test order by keyId desc  
  go
  select * from vw_test
 --当运行此视图时,出现以下错误信息
 --- "除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。"
 --此时我们需要使用top关键字 指定视图显示行的方法,使视图支持order by,如下
 ---使用 top 100 percent 返回前百分之百行数据
 alter view vw_test 
 as 
   select top 100 percent * test order by keyId desc  
 go 
   select * from vw_test ---一切运行正常,视图中的数据也是按照指定的排序方式进行排序
go
  
  drop view vw_test 
  truncate table  test 
  drop table test 

mssql sqlserver update delete表别名用法简介


摘要:
在sql脚本编写中,如果需要在update delete 中使用表别名的方法,必须按照一定的规则编写,否则将会出现相应的异常信息,如下所示:
实验环境:sqlserver 2008 R2


   ---update 表别名的写法
    update [别名] set [别名].[字段] =[字段值]  from [表名] as [表别名] where [条件]
    ---delete 表别名的写法
    delete [别名] set [别名].[字段] =[字段值]  from [表名] as [表别名] where [条件]

mssql sqlserver update关键字使用别名的用法分享


摘要:
在sql脚本编写中,使用表别名可以使代码看起来整齐,加快脚本编写
使用表别名可以区分一张表多次引用
我们经常使用select * from tableName as [表别名] 使用别名的方式代替表名,
下文将分享update 关键字使用表别名的方法


 --1.表别名引用举例
  select * from tableName as A left join tableName as B on A.keyId = B.keyId 
  ---使用表别名,我们可以多次引用tableName表

 --2.update 表别名引用举例
    update A 
      set A.info ='test' 
    from tableName A 
    where A.keyId =100
   ---上述代码中,A为表别名 tableName为表名
 --3 update 使用表别名多次引用一张表
       update A 
           set A.info = B.keyId
       from tableName A,tableName B  
        where A.keyId = b.keyId+1
     ----A ,B 均为表别名 tableName为表名