有關sqlserver2005數據去重

 

WITH TEST AS

 (
    SELECT ROW_NUMBER() 
    OVER(PARTITION BY Column1,Column2,Column3 ORDER BY ID ) 
    AS NUM,* FROM TableName
 )
 DELETE FROM TEST
 WHERE NUM != 1



說明: html

1. sql

WITH AS的含義 
    WITH AS短語,也叫作子查詢部分(subquery factoring),可讓你作不少事情,定義一個SQL片段,該SQL片段會被整個SQL語句所用到。有的時候,是爲了讓SQL語句的可讀性更高些,也有多是在UNION ALL的不一樣部分,做爲提供數據的部分。 
特別對於UNION ALL比較有用。由於UNION ALL的每一個部分可能相同,可是若是每一個部分都去執行一遍的話,則成本過高,因此可使用WITH AS短語,則只要執行一遍便可。若是WITH AS短語所定義的表名被調用兩次以上,則優化器會自動將WITH AS短語所獲取的數據放入一個TEMP表裏,若是隻是被調用一次,則不會。而提示materialize則是強制將WITH AS短語裏的數據放入一個全局臨時表裏。不少查詢經過這種方法均可以提升速度。
函數

參考:http://jc-dreaming.iteye.com/blog/772030
優化

2. spa

partition  by關鍵字是分析性函數的一部分,它和聚合函數不一樣的地方在於它能返回一個分組中的多條記錄,而聚合函數通常只有一條反映統計值的記錄,partition  by用於給結果集分組,若是沒有指定那麼它把整個結果集做爲一個分組  code

能夠參考:http://www.cnblogs.com/sanlang/archive/2009/03/24/1420360.html htm

3. blog

OVER 在應用關聯的開窗函數前肯定行集的分區和排序。 也就是說,OVER 子句定義查詢結果集內的窗口或用戶指定的行集。 而後,開窗函數將計算窗口中每一行的值。 您能夠將 OVER 子句與函數一塊兒使用,以便計算各類聚合值,例如移動平均值、累積聚合、運行總計或每組結果的前 N 個結果。 排序

能夠參考:http://msdn.microsoft.com/zh-cn/library/ms189461.aspx ci

相關文章
相關標籤/搜索