今天说一下Order by 这个常规东西~

Order by 在我们日常的数据库开发生活中是出镜率灰常高的。

order by 的作用就是用于对查询出来的结果进行排序~对啊~人家就是这么接地气~比如按发生时间啊,首字母啊之类的都是相当常见。

今天主要分享一下order by 的用法和样例。

常规用法

CREATE TABLE #Tmp1(
ID INT IDENTITY,
Col1 NVARCHAR(50),
Col2 NVARCHAR(max)
)

INSERT INTO #Tmp1
        (  Col1 ,Col2)
VALUES  (N‘AAA‘,REPLICATE(‘AAA‘,5000 ))
        ,( N‘aaa‘,REPLICATE(‘aaa‘,5000 ))
        ,(N‘aAA‘,REPLICATE(‘aAA‘,5000 ))
        ,(N‘aaA‘,REPLICATE(‘aaA‘,5000 ))    

SELECT *
    FROM #Tmp1
    ORDER BY ID

这个是最简单的~然后如果我们想奇数优先,偶数殿后~这个就用到了order by 里面的表达式技能~如

SELECT *
    FROM #Tmp1
    ORDER BY CASE WHEN ID%2 > 0 THEN 1 ELSE 2 END, ID

支持表达式~无论你是想要在order by 里面求和还是乘积,都通通可以满足你的要求~但是有一点,就是数据类型一致,起码是可以隐式转换成一致╮(╯_╰)╭。不然,1和a 谁大呢?

然后看下我的例子~虽然都是aaa,当然罗,大小写是不一样的,但是通常在我们默认的排序里面呢,大小写是不区分,a 和 A是一个人。如果要加上大小写排序罗,那就在order by 后面引用排序序列就好了

排序规则排序参考:https://msdn.microsoft.com/zh-cn/library/ms143726(v=sql.120).aspx

SELECT *
    FROM #Tmp1
        ORDER BY Col1 COLLATE Azeri_Latin_100_CS_AI ASC 

但是有一些类型是是无法排序的,比如说ntext,text ,image ,xml ,地理类型 这些类型都无法使用 order by 进行排序。

然而,在2012之后的版本,sql server 提供了便捷的查询分页语句 Offset  fetch 语句 (然而好像mysql 之类的一早支持了这种写法,但是性能上面并没有比对过)

当我们取用前2行的写法,比之前写了一堆的分页语句在开发上确实便捷了好多好多

SELECT *
    FROM #Tmp1
        ORDER BY Col2 COLLATE Azeri_Latin_100_CS_AI ASC
        OFFSET 0 ROWS
        FETCH NEXT 2 ROWS only

有2点注意

1、offset 从0 开始,并不是1

2、如果offset 比 总返回行数多,将不返回任何行

谢谢又看我一本正经の胡说八道~祝大家新年继续快乐

时间: 2024-08-16 03:29:33

今天说一下Order by 这个常规东西~的相关文章

Git的基本使用方法和安装&心得体会

1. git的安装和github的注册.代码托管.创建organization.邀请member. (1)git的安装 因为我电脑是windows系统,所以下载的是git for windows.在官网下载非常卡,直接百度搜找百度那个下载就可以.下载后选择路径一直next就行了. (2)github的注册 没什么说的,虽然界面是英文,不过要是连这种程度的都看不懂你还是洗洗睡吧.按要求填完邮箱账号密码等常规东西就注册完了. (3)创建organization the organization's

NHibernate之旅(9):探索父子关系(一对多关系)

本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术.从这篇开始学习这些东西,我将图文结合来说明这里奥秘的知识. 前几篇,我们的例子只使用了一个简单的Customer对象.但是在客户/订单/产品的经典组合中,他们的关系非常复杂?让我们先回顾在第二篇中建立的数据模型. 在图上,我已经清晰的标注了表之间的关系,首先分析Cu

[转]NHibernate之旅(9):探索父子关系(一对多关系)

本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术.从这篇开始学习这些东西,我将图文结合来说明这里奥秘的知识. 前几篇,我们的例子只使用了一个简单的Customer对象.但是在客户/订单/产品的经典组合中,他们的关系非常复杂?让我们先回顾在第二篇中建立的数据模型. 在图上,我已经清晰的标注了表之间的关系,首先分析Cu

测试常规需要测试的东西

界面上 翻页 基本要有上一页 下一页 页码都对 如果是一页需要统计的 那么应该出来总数量等数据,不需要统计的数据分页可以顺序的进行 分页一定要注意搜索条件能正常带上 分页里面数据如果有弹出编辑等编辑完后应该在当前页 不能乱跳, 而且编辑完后会自动刷新数据 搜索 一般建议采取搜索只会改变数据 搜索条件不随之刷新 空记录时候是否提示 搜索条件区间问题 搜索按钮点击完后是不能变灰的 表单 表单多个元素之间用tab 键是否能正常按规范切换 是否支持ESC , EnTer(一般登录是需要支持Enter 单

U3D sorting layer, sort order, order in layer, layer深入辨析

1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等.将不同类的物体划分到不同的层,便于相机拣选,在相机的cullmask中可以选择渲染哪些层,不选择的层则不会渲染.还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测. 2,canvas默认是屏幕空间的2D对象,在屏幕空间时仅具有sort order属性,当把它设置为世界空间时,sort order属性消失

Android面试常规问答

  1. Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Con

mysql ORDER BY,GROUP BY 和DISTINCT原理

前言 除了常规的Join语句之外,还有一类Query语句也是使用比较频繁的,那就是ORDERBY,GROUP BY以及DISTINCT这三类查询.考虑到这三类查询都涉及到数据的排序等操作,所以我将他们放在了一起,下面就针对这三类Query语句做基本的分析. ORDER BY 的实现与优化 在MySQL中,ORDERBY的实现有如下两种类型: 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端要求的有序数据返回给客户端: 另外一种则需要通过MySQL的排序算法将存储

常规流之行内级格式化上下文(Inline Formatting Contexts)

本节我们来讨论一下Inline formatting contexts(行内格式化上下文,以下简称IFC)和line box(行框). 一.行框 在一个行内格式化上下文中,框会一个接一个的水平放置,从包含块的顶部开始.这些框水平方向的margin.border以及padding属性是会起作用的.这些框在垂直方向上的对齐方式可以不一样:可以顶部或底部对齐,或根据其中文字的基线对齐.包含这些框的矩形区域,会形成一行叫做行框(line box)的东西. 一个行框的宽度由它的包含块和和其中的浮动元素来决

#define barrier() __asm__ __volatile__("": : :"memory") 中的memory是gcc的东西

gcc内嵌汇编简介 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作. 1.简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"asm"是"__asm__"的别名.&