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

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

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

    blog.Toby

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

    ? join 方式
    (1) cross join
    ????? 參與select語句所有表的的所有行的笛卡爾乘積
    ????? select au_lname ,title
    ????? from authors cross join? titiles

    ???? outer? join 對參與join的兩個表有主從之分,處理方式以主表的每條數據去match 從屬表的列,合乎條件的數據是我們所要的答案,不合乎條件的也是我們要的答案,只不過哪些從屬表選取的列將被添上null。
    (2) left join
    ???? 左邊的為主表,右邊為從屬表
    ???? select a.cust_id ,b.order_date,b.tot_ant
    ???? from customer a left join sales b
    ???? on (a.cust_id =b.cust_id and b.order_date>''1996/10/15'')
    ???? 可以寫為
    ???? select a.cust_id,b.order_date,b.tot_ant
    ???? from custom a
    ???? left join (select * from sales where order_date>''1996/10/15'') b
    ??? on a.cust_id =b.cust_id??
    (3) right join
    ???? 左邊的表為從屬表,右邊的表為主表
    (4) self join
    ???? self join 常用在同一表內不同數據間對同一列的比較
    ??? select a.emp_no,a.emp_name,b.emp_no,b.emp_name,a.date_hired
    ??? from employee a
    ??? join employee b
    ??? on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)
    ??? order by a.date_hired
    ?? 這樣會重復數據,只要加上一句 and a.emp_name>b.emp_name
    (5) full join
    ???? 不僅列出符合條件的數據,兩邊未符合join條件的數據也會一并列出。哪些未符合join條件的數據如果在select列中無法得到對應的值則填上null
    ??? select a.cust_id,b.tot_amt
    ??? from customer a full join sales b
    ??? on a.cust_id=b.cust_id
    有表
    ?id?? ic? name? amount
    ????? I??? *??????? *
    ????? c
    ????? i
    ????? c
    ????? i
    ????? i??
    ?? 要求結果為?
    ??? ic? name? amount? ic?? name? amount
    ??? i???????????????????????? c
    ??? i???????????????????????? c
    ??? i
    ??? i
    ? select aaa.*,bbb.*
    ? from ( select (select count(id) from? aa as? b where (b.id<a.id) and (ic=''i'')) as???? newid, * from aa a where ic=''i'') aaa
    ? full join
    ?? (select (select count(id) from aa as b where b.id<a.id and ic=''c'') as newid,* from
    ?aa a where ic=''c'') bbb
    on aaa.newid=bbb.newid
    order by aaa.name
    6.使用 HASH 和 MERGE 聯接提示
    此示例在 authors、titleauthors 和 titles 表之間建立三表聯接,以生成一個作者及其著作的列表。查詢優化器使用 MERGE 聯接將 authors 和 titleauthors (A x TA) 聯接在一起。然后,將 authors 和 titleauthors MERGE 聯接 (A x TA) 的結果與 titles 表進行 HASH 聯結以生成 (A x TA) x T。


    重要? 指定聯接提示后,要執行 INNER JOIN 時 INNER 關鍵字不再為可選,而必須顯式說明。


    USE pubs
    SELECT SUBSTRING((RTRIM(a.au_fname) + '' '' + LTRIM(a.au_lname)), 1, 25)
    ?? AS Name, SUBSTRING(t.title, 1, 20) AS Title
    FROM authors a INNER MERGE JOIN titleauthor ta
    ?? ON a.au_id = ta.au_id INNER HASH JOIN titles t
    ?? ON t.title_id = ta.title_id
    ORDER BY au_lname ASC, au_fname ASC

    下面是結果集:

    Warning: The join order has been enforced because a local join hint is used.
    Name????????????????????? Title???????????????
    ------------------------- --------------------
    Abraham Bennet??????????? The Busy Executive''s
    Reginald Blotchet-Halls?? Fifty Years in Bucki
    Cheryl Carson???????????? But Is It User Frien
    Michel DeFrance?????????? The Gourmet Microwav
    Innes del Castillo??????? Silicon Valley Gastr
    ...??????????????????? ...
    Johnson White???????????? Prolonged Data Depri
    Akiko Yokomoto??????????? Sushi, Anyone???????

    (25 row(s) affected)

    (7)Inner Join

    Inner Join 邏輯運算符返回滿足第一個(頂端)輸入與第二個(底端)輸入聯接的每一行。

    作者Blog:http://blog.csdn.net/softj/

    posted on 2006-04-03 13:54 渠上月 閱讀(357) 評論(0)  編輯  收藏 所屬分類: sql (sqlServer)
    主站蜘蛛池模板: 久久国产乱子伦精品免费午夜| 亚洲一区二区三区高清不卡 | 波多野结衣中文字幕免费视频| 亚洲熟妇无码乱子AV电影| 久久WWW免费人成—看片| 亚洲AV人无码激艳猛片| 久久精品无码专区免费东京热| 亚洲成aⅴ人在线观看| 成年女人免费v片| 免费在线观看自拍性爱视频| 亚洲AV网站在线观看| a毛片免费观看完整| 亚洲高清日韩精品第一区| 日韩av无码成人无码免费 | 亚洲一卡二卡三卡| 97无码免费人妻超级碰碰碰碰 | 久久国产亚洲精品无码| 亚洲视频在线免费播放| 日本人成在线视频免费播放| 亚洲制服丝袜第一页| 亚洲日韩在线中文字幕第一页| 久久亚洲最大成人网4438| AA免费观看的1000部电影| 久久亚洲欧美国产精品| 亚洲成AV人片在线播放无码| 亚洲永久无码3D动漫一区| 亚洲欧美熟妇综合久久久久| 久久青草国产免费观看| www国产亚洲精品久久久| 久久亚洲日韩精品一区二区三区| 久久w5ww成w人免费| 亚洲欧美成人综合久久久| 亚洲а∨天堂久久精品| 嫩草成人永久免费观看| 色噜噜亚洲男人的天堂| 亚洲国产一级在线观看| 国产高清不卡免费视频| 亚洲第一区二区快射影院| 亚洲A丁香五香天堂网| 视频免费1区二区三区| 一个人看的www免费高清|