<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大大毛 的筆記

      DDM's Note

    哪怕沒有辦法一定有說法,
    就算沒有鴿子一定有烏鴉,
    固執無罪 夢想有價,
    讓他們驚訝.

    posts - 14, comments - 23, trackbacks - 0, articles - 58
       :: 首頁 ::  :: 聯系 ::  :: 管理

    查找不連續數據的多種方法

    Posted on 2007-09-03 19:31 大大毛 閱讀(457) 評論(0)  編輯  收藏 所屬分類: SQL

    問題:

    ??????經常會遇到在業務邏輯上數據連續的而需要找到那些不連續數據的情況。
    ??????解決此類問題的方法有很多,可以根據具體的數據結構來加以選擇運用,現就示例說明:

    示例1:
    表A結構

    ???表結構說明
    ??????kID??????主關鍵字,例如合同號
    ??????iNo??????序號(>=1),從業務邏輯上來說對於同一筆合同號該列的值應該保持連續遞增
    ???要求
    ??????找到那些有問題的 kID

    解決方法:
    ??????表A屬於是一種比較單純、簡單的結構,對於這類只要直接在表上做一次處理即可。
    ??????1. 方法A --?自連接
    ?????????利用對自身表的 iNo?進行錯值(+1或-1)外連,?找到無法連接的數據。
    自連接

    ??????這樣就可以定位到那些有問題的 kID 上。
    ??????這種解決方法是最通用的方法,不過在編寫上比較複雜。

    ??????2. 方法B -- 利用Count(*)
    利用Count(*)

    ??????看看這個實現就可以發現,這裏比較巧妙的利用了 iNo 列上的邏輯規則 (int型的連續遞增),如果 iNo 不從1開始計數則在Having 子句中加一點點運算即可。
    ??????這個解決方法比較巧妙,執行效率較高。

    ??????3. 方法C --?利用函數
    利用公式運算

    ??????方法C 與方法B 的思路實際上是一致的,就是利用 Group?,在 iNo?列上直接實施檢查,方法C 功能更加強大一些,因為如果 iNo 的規則有變更的話(如奇數遞增, :P ),改改這裏用的 n(n+1)?/ 2 的公式就好。


    示例2:
    ??????這裏是另外一種情況,相比示例1 來說更加複雜一些,它的 iNo 列由多列組成,示例如下。
    表B結構

    ??????表結構說明
    ?????????kID????????????主關鍵字,例如合同號
    ?????????iYear?????????第幾年度( >= 1),連續遞增
    ?????????iMonth?????第幾月份[1, 12],連續遞增
    ??????要求
    ?????????找到那些年度+月份不連續的 kID

    解決方法:
    ??????表B 的結構與表A 相比在需要檢查的列上變成多列的結構,而且多列的內部還有著一些隱含關係(如這裏示例中的年/月,顯然不可能第1年度未滿12月就跳到第2年度),不過就實質來看與表A 的結構一致 ( 可以將iYear , iMonth 看成一列?),因此同樣可以適用示例1中的方法,只要多加合併?iYear,?iMonth的邏輯就好。
    ??????這裏對iYear, iMonth列的合併,使用自定義列 + 表封裝 的方式來實現,下面就示例上面的Count方式。?
    利用Count(*)

    i am ddm

    主站蜘蛛池模板: 亚洲男人在线无码视频| 在线观看免费污视频| 色噜噜AV亚洲色一区二区| 国产亚洲午夜精品| 免费A级毛片无码A| 一级特黄特色的免费大片视频| 国产成人aaa在线视频免费观看| 国产精品亚洲精品日韩动图| 免费A级毛片无码A∨男男| 免费国产a理论片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 女性自慰aⅴ片高清免费| 亚洲一区二区无码偷拍| 日本免费一区二区三区最新| 亚洲av色香蕉一区二区三区| 四虎精品亚洲一区二区三区| 日韩大片免费观看视频播放| 亚洲中文字幕无码久久精品1| 永久免费不卡在线观看黄网站| 久久精品国产96精品亚洲 | 国产成人精品免费视频网页大全| 亚洲第一页在线观看| 97无码免费人妻超级碰碰碰碰| 亚洲AV无码精品国产成人| 亚洲AV之男人的天堂| 国产性生大片免费观看性| 亚洲视频精品在线观看| 好先生在线观看免费播放| 国产成人高清亚洲一区91| 亚洲精品无码专区在线在线播放| 91免费国产自产地址入| 亚洲国产精品ⅴa在线观看| 国产日产亚洲系列| 国产成人精品免费视频网页大全 | 美女无遮挡拍拍拍免费视频| 久久久久久亚洲Av无码精品专口| 成**人免费一级毛片| 中国人免费观看高清在线观看二区 | 免费人成在线观看网站品爱网日本| 波多野结衣免费一区视频| 亚洲精品精华液一区二区|