1. Set、Select赋值

使用SELECT语句来替代SET命令的主要优点是:可以在一个操作内同时给多个变量赋值。执行下面的SELECT语句,通过SELECT语句赋值的变量就可以用于任何操作了。
 
declare @num1 int, @num2 int,@result1 int,@result2 int
select @num1= 144,@num2 = 121
select @result1 = sqrt(@num1),@result2 = sqrt(@num2)
select @result1,@result2
 
用一个select 语句给多个变量赋值一般比用多个SET命令的效率要高。将一个甚至多个值选进参数的限制是,对变量的赋值不能和数据检索操作同时进行。这就是上面的例子使用SELECT语句来填充变量,而用另外一个SELECT语句来检索变量中数据的原因。例如,下面的脚本就不能工作:
 
declare @RestockName varchar(50)
select ProductId,@RestockName=Name+':'+ProductNumber FROMProduction.Product
 
 这个脚本会产生如下错误:消息141,级别15,状态1,第2 行
2.  特定排序的写法
--1. 将MessageType表数据以后面的id(59、107、62、18、66、65)排序
select * from MessageType where class_id=31 order by charindex(ltrim(id),'59,107,62,18,66,65')
--2. 将管理员、张三排最前面,其他按id排序
select * from tb_users order by case when username like '%管理员%' then 0 when username like '%张三%' then 1 else 2 end,id

3.  top 100 percent 用法

  select top 30 * from data where title='&title1&' order by id desc
  原意是选出符合“where 条件”的记录集里的“前30条”

  但是,对于该SQL语句,由于语句里同时存在where和top语句,并且where条件列不是合适的索引,程序执行的是全表扫描,首先是查找符
合where条件的记录, 而这里的top限制形同虚设。如果全表是百万级别以上的数据表,那么就这么一个简单的判断,就有可能拖垮数据库。

  所以需要先把符合“where条件”的记录,用一个子查询筛选出来,再在筛选结果集里选top30。

  因为SQL规则规定,如果子查询里,有order ...,就必须有TOP,所以就用SELECT TOP 100 PERCENT来限定,top 100 percent是为了保证筛选出所有符合条件的数据条目。否则,报错:消息 1033,级别 15,状态 1,第 5 行除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。默认情况下,如果子查询,函数,视图中尝试去使用order by,如下则报该错误:

create view dbo.VUsers
as
select id,username from tb_users order by id
go

因为,针对一个表的select其实并不是返回一个表,而是一个游标。解决办法:

select top 100 percent id,username from tb_users order by id,username desc

4、in 长度限制

sql in 长度超过1000 会出错,可以选择下面的写法:

select * from table where id in ('1','2') or id in('3','4')

引用:http://www.cnblogs.com/ziyeyimeng/articles/2099188.html

Sql 注意点的更多相关文章

  1. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  2. SQL Server 大数据搬迁之文件组备份还原实战

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

  3. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  4. SQL Server中的高可用性(2)----文件与文件组

        在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

  5. EntityFramework Core Raw SQL

    前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

  6. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  7. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  10. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

随机推荐

  1. Scala-Trait:混入与多态

    Scala 的 Trait 结合了抽象类与接口的能力,通过混入来获得灵活的多态能力. 代码如下所示: FileAbility 提供了读取文件.处理文件的能力, 其中继承一个空实现的 Trait:Lin ...

  2. HTML5的数据自动补齐功能

    使用datalist元素,HTML5允许使用一组数据来生成自动补齐功能,现在你不需要使用第三方js代码或者类库啦! <input name="frameworks" list ...

  3. 【Office Word】论文排版有关技巧

    本文分两部分,第一部分呢是Word中标题的编号以及图表的编号:第二部分是MathType中公式编号的右对齐方法.   1. word中标题的编号以及图表的编号   本部分转载自:http://blog ...

  4. PetaPoco的几个特性

    在PetaPoco中,Brad并没有定义太多Attribute来修饰Models或Fields.这些为数不多的几个Attribute如下: ColumnAttribute ExplicitColumn ...

  5. (转)建站知识:域名/ 空间/ IP/ 端口之间的关系

    先说域名解析吧,比如说你的域名是 www.sunnymould.com,这个域名对应着一个IP地址,域名解析就是把上面的域名转换成这个IP地址的过程,这样你就可以域名访问了上面地址上的内容了. 端口映 ...

  6. Duilib 实现窗口点击关闭确认退出提示

    此功能是记住用户的操作,在用户点击关闭时是真退出程序还是最小化到托盘,我们常见的PC客户端都有此功能,例如:IMO客户端.网易云音乐 我自己的项目中也要实现此功能,在此总结一下,最终效果: .h文件 ...

  7. PHP 回调、匿名函数和闭包

    <?php class Product{ public $name; public $price; function __construct($name, $price){ $this-> ...

  8. [转](五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unityma ...

  9. Creating Custom Login Screen In Oracle Forms 10g

    Below is the example plsql unit to validate login credentials and after successful validation open a ...

  10. web过滤器中获取请求的参数(content-type:multipart/form-data)

    1.前言: 1.1 在使用springMVC中,需要在过滤器中获取请求中的参数token,根据token判断请求是否合法: 1.2 通过requst.getParameter(key)方法获得参数值; ...