posts - 60,comments - 71,trackbacks - 0

              我們在做兩張表或多張表的關聯查詢時,有時會碰到查出重復記錄的情況,這對于查詢來講重復的數據是沒有意義的,應該去掉,如有A表和B表,表的結構如下:

          A表:  a_id varchar(10),a_name varchar(10),a_height varchar(10)
          數據有:
          1001,a_ffff,12
          1002,a_eeee,16
          1003,a_kkkk,13

          B表:   b_id varchar(10),b_name varchar(10),b_length varchar(10)
          數據有:
          1001,b_pppp,20
          1001,b_pppp,10
          1002,b_yyyy,14
          1003,b_www,12
          1003,b_www,18

          進行關聯查詢時: select A.a_id,A.a_name,A.a_height,B.b_namefrom A,B where A.a_id=B.b_id;(1)

          這樣就會查詢到如下的數據:

          1001,a_ffff,12,b_pppp
          1001,a_ffff,12,b_pppp
          1002,a_eeee,16,b_yyyy
          1003,a_kkkk,13,b_www
          1003,a_kkkk,13,b_www

          這樣就會造成有重復數據的情況,當然這和要查詢的數據內容有關,即如果還要查詢B表中的b_length 字段內容時,就不會是有重復記錄的情況了,當然這和實際需求有關,如果需求只需要查詢(1)中的內容,這就是會有重復記錄了,解決的辦法很簡單,即在查詢的字段前面加上distinct即可去掉重復記錄了,
          當然B表中的數據還有一個特點,即b_id相同的記錄的b_name的數據是相同的,其他字段的數據可相同也可不同.

          當然這只是舉的一個例子,實際需求中肯定會有B表這樣的數據的情況,另外,再說一下,這和要查詢的字段內容有關,即(1)語句如果還要查詢B表中的b_length 這個字段時,在上述測試的數據中,是不會存在相同記錄的.

          posted on 2008-07-31 21:55 henry1451 閱讀(1090) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 渝北区| 盐边县| 于田县| 岳西县| 山阴县| 江阴市| 新乡市| 虎林市| 建德市| 新郑市| 尤溪县| 剑川县| 姚安县| 临朐县| 昌邑市| 牡丹江市| 万荣县| 绥德县| 铜梁县| 凯里市| 三门县| 河北区| 德兴市| 崇仁县| 洪江市| 黄骅市| 凤阳县| 宁远县| 贡觉县| 焉耆| 三门峡市| 华亭县| 南通市| 南川市| 平度市| 陆川县| 峡江县| 梁山县| 依安县| 买车| 通渭县|