摘要:Tiebreakers情况:即在某一条件相同的情况下(比如GROUP BY),在数据表里找到根据另外几个条件(先后关系)的最大(最小)值。 作者展示了解决这样的问题的方法,这个方法的好处就是,不需要进行额外的INDEX的编码。 比如要达到这样一个查询: SELECT EmployeeID, MA...
阅读全文
摘要:OVER关键字允许你去请求基于窗口的计算,也就是,整个计算在一个查询窗口完成。 比如下面的例子: SELECT stor_id, ord_num, title_id, CONVERT(VARCHAR(10), ord_date, 120) AS ord_date, qty, CAST(1.*qty...
阅读全文
摘要:介绍2个关键字的用法:EXCEPT,INTERSECT. EXCEPT 例子如下, TABLE1:1,2,3 TABLE2:3,4,5 TABLE1 EXCEPT TABLE2 结果为 1,2 TABLE2 EXCEPT TABLE1 结果为 4,5 原始实现(非关键字实现): SELECT Co...
阅读全文
摘要:JOIN关键字所起的效果最先并不是使用JOIN来做到的,ANSI SQL:1989所采用以下的格式: FROM T1, T2 WHERE where_filter 同时LEFT JOIN和RIGHT JOIN是使用*=和=*来起到相同作用。 到了ANSI SQL:1992,就出现了JOIN: F...
阅读全文
摘要:作者提供了一种计算出数据存在的范围和缺少的范围的方法,他提醒我们要注意这些技术本身,而不仅仅是数据。 我们有一个数据列如下:1,2,3,100,101,103,104,105,106 返回结果1(丢失的范围): start_range end_range 4----------99 102---...
阅读全文
摘要:作者他很喜欢建立数字辅助表(即是1-N的数字按顺序组成的表),关于如何建立这些辅助表,然后他给了一些例子,这些例子很有代表性。 比如,我要建立一个1,000,000行的数字表: CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY); DECLARE @...
阅读全文
摘要:利用ROW_NUMBER()进行高效率的分页。 AD HOC PAGING: 就是指用页面的序号和页面的大小请求一个单独的页面。下面是例子。 DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = ...
阅读全文
摘要:SQL2005增加了4个关于队计算的函数:分别是ROW_NUMBER,RANK,DENSE_RANK,NTILE. 注意:这些函数只能出现在SELECT和ORDER BY的查询中。语法如下: ranking_function over([partition by col_list] order b...
阅读全文