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

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

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

    石建 | Fat Mind

    sql連接查詢

    請(qǐng)參考:http://en.wikipedia.org/wiki/Join_(SQL)#Sample_tables

    inner JOINS

      An inner join is the most common join operation used in applications and can be regarded as the default join-type. Inner join creates a new result table by combining column values of two tables (A and B) based upon the join-predicate. The query compares each row of A with each row of B to find all pairs of rows which satisfy the join-predicate. When the join-predicate is satisfied, column values for each matched pair of rows of A and B are combined into a result row. The result of the join can be defined as the outcome of first taking the Cartesian product (or cross-join) of all records in the tables (combining every record in table A with every record in table B)—then return all records which satisfy the join predicate. Actual SQL implementations normally use other approaches like a Hash join or a Sort-merge join where possible, since computing the Cartesian product is very inefficient.

      注意:innner查詢(默認(rèn)的連接查詢方式),是先查詢“Cartesian”生成中間表,再根據(jù)where條件篩選結(jié)果;但此方法非常低效,SQL具體的實(shí)現(xiàn)可能是 
    Hash join or a Sort-merge join 。
            
    One can further classify inner joins as equi-joins, as natural joins, or as cross-joins.

    SELECT *
    FROM employee INNER JOIN department
    ON employee.DepartmentID = department.DepartmentID;
    The following example shows a query which is equivalent to the one from the previous example.
    
    
    SELECT *
    FROM   employee, department
    WHERE  employee.DepartmentID = department.DepartmentID;
    

    Outer joins

      An outer join does not require each record in the two joined tables to have a matching record. The joined table retains each record—even if no other matching record exists. Outer joins subdivide further into left outer joins, right outer joins, and full outer joins, depending on which table(s) one retains the rows from (left, right, or both).

    Example of a left outer join, with the additional result row italicized:

    SELECT *
    FROM   employee  LEFT OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;
    
    Employee.LastNameEmployee.DepartmentIDDepartment.DepartmentNameDepartment.DepartmentID
    Jones 33 Engineering 33
    Rafferty 31 Sales 31
    Robinson 34 Clerical 34
    Smith 34 Clerical 34
    John NULL NULL NULL
    Steinberg 33 Engineering 33


    Example right outer join, with the additional result row italicized:

    SELECT *
    FROM   employee RIGHT OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;
    
    Employee.LastNameEmployee.DepartmentIDDepartment.DepartmentNameDepartment.DepartmentID
    Smith 34 Clerical 34
    Jones 33 Engineering 33
    Robinson 34 Clerical 34
    Steinberg 33 Engineering 33
    Rafferty 31 Sales 31
    NULL NULL Marketing 35


    Example full outer join: (mysql is not support)

    SELECT *
    FROM   employee
    FULL OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;
    
    Employee.LastNameEmployee.DepartmentIDDepartment.DepartmentNameDepartment.DepartmentID
    Smith 34 Clerical 34
    Jones 33 Engineering 33
    Robinson 34 Clerical 34
    John NULL NULL NULL
    Steinberg 33 Engineering 33
    Rafferty 31 Sales 31
    NULL NULL Marketing 35


    Self-join

    A query to find all pairings of two employees in the same country is desired.

    An example solution query could be as follows:

    SELECT F.EmployeeID, F.LastName, S.EmployeeID, S.LastName, F.Country
    FROM Employee F, Employee S
    WHERE F.Country = S.Country
    AND F.EmployeeID < S.EmployeeID
    ORDER BY F.EmployeeID, S.EmployeeID;
    

    Which results in the following table being generated.

    Employee Table after Self-join by Country
    EmployeeIDLastNameEmployeeIDLastNameCountry
    123 Rafferty 124 Jones Australia
    123 Rafferty 145 Steinberg Australia
    124 Jones 145 Steinberg Australia
    305 Smith 306 John Germany










    Join algorithms

    Three fundamental algorithms exist for performing a join operation: Nested loop joinSort-merge join and Hash join.




     

    posted on 2010-11-03 15:36 石建 | Fat Mind 閱讀(288) 評(píng)論(0)  編輯  收藏 所屬分類: database


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2010年11月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評(píng)論

    What 、How、Why,從細(xì)節(jié)中尋找不斷的成長(zhǎng)點(diǎn)
    主站蜘蛛池模板: 亚洲一级二级三级不卡| 91香蕉国产线在线观看免费| 亚洲人成综合在线播放| 亚洲熟妇av一区二区三区| 成人免费视频国产| 自拍偷自拍亚洲精品第1页| 四虎www免费人成| 99视频免费播放| 最近免费中文字幕MV在线视频3| 国产精品亚洲专区在线播放| 国产成人精品日本亚洲专| 亚洲欧洲日韩不卡| 亚洲国产日韩在线视频| 2048亚洲精品国产| 免费中文字幕在线观看| 免费观看的毛片手机视频| 99久久免费国产精品特黄| 91频在线观看免费大全| 97精品免费视频| 无码国产精品一区二区免费16 | 91免费资源网站入口| 免费视频成人片在线观看| 精品国产污污免费网站入口在线| 久久夜色精品国产亚洲AV动态图| 亚洲一级片免费看| 国产成人免费网站在线观看 | 亚洲人成影院在线高清| 亚洲自偷自拍另类12p| 亚洲av丰满熟妇在线播放| 久久青草亚洲AV无码麻豆| 亚洲av不卡一区二区三区| 亚洲成人在线电影| 久久久久亚洲AV成人无码网站| 亚洲av午夜福利精品一区| 亚洲人成电影福利在线播放| 亚洲色图在线观看| 亚洲精品国产福利片| 亚洲一区二区三区久久| 亚洲中文无码卡通动漫野外| 亚洲av片在线观看| 日本黄页网址在线看免费不卡|