• Join and Where


    JOIN & WHERE

    Explanation

    Details

    left join

    left outer join

    (左联接

    返回包括左表中的所有记录和右表中联结字段相等的记录 

    左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

    right join

    right outer join

    (右联接

    返回包括右表中的所有记录和左表中联结字段相等的记录

    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

    inner join

    (等值连接)

    只返回两个表中联结字段相等的行

    WHERE INNER JOIN产生的连接关系,本质区别不详,结果一样。

    1)在效率上,Where可能具有和Inner join一样的效率。但基本可以肯定的(通过SQLServer帮助和其它资料,以及本测试)是Join的效率不比Where差。

    2)使用Join可以帮助检查语句中的无效或者误写的关联条件。

    (3)从可读性角度来看,Where直观。

    full join

    full outer join

    (全连接)

    完整外部联接返回左表和右表中的所有行

    当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

    Join & where总结:

    where是两个表中的数据满足共同条件才会显示。
    Jion on是相同条件匹配。

    因此,除了inner join结果通常不一样。

    Jion 显示的内容 >= where 条件显示的内容。



    举例说明

    Table : PERSONS

    PERSON_ID

    NAME

    CITY 

    1

    Jhon 

    London  

    2

    Danny

    New York

    3

    Tom  

    Beijing 

    4

    Candy

    Dalian  

    5

    Venus

    Chengdu 

    6

    Lobna

    Shanghai

    Table : ORDERS

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    1

    111111

    1

    2

    222222

    1

    3

    333333

    2

    4

    444444

    2

    5

    555555

    3

    6

    666666

    4

    7

    777777

    7

    8

    888888

    9

    9

    999999

    9



    1) select * from cid.orders left join cid.persons on cid.orders.person_id = cid.persons.person_id;

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    PERSON_ID

    NAME

    CITY

    1

    111111

    1

    1

    Jhon

    London

    2

    222222

    1

    1

    Jhon

    London

    3

    333333

    2

    2

    Danny

    New York

    4

    444444

    2

    2

    Danny

    New York

    5

    555555

    3

    3

    Tom

    Beijing

    6

    666666

    4

    4

    Candy

    Dalian

    7

    777777

    7

    (null)

    (null)

    (null)

    8

    888888

    9

    (null)

    (null)

    (null)

    9

    999999

    9

    (null)

    (null)

    (null)



    2) select * from cid.orders right join cid.persons on cid.orders.person_id = cid.persons.person_id;

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    PERSON_ID

    NAME

    CITY

    1

    111111

    1

    1

    Jhon

    London

    2

    222222

    1

    1

    Jhon

    London

    3

    333333

    2

    2

    Danny

    New York

    4

    444444

    2

    2

    Danny

    New York

    5

    555555

    3

    3

    Tom

    Beijing

    6

    666666

    4

    4

    Candy

    Dalian

    (null)

    (null)

    (null)

    5

    Venus

    Chengdu

    (null)

    (null)

    (null)

    6

    Lobna

    Shanghai



    3) select * from cid.orders inner join cid.persons on cid.orders.person_id = cid.persons.person_id;

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    PERSON_ID

    NAME

    CITY

    1

    111111

    1

    1

    Jhon

    London

    2

    222222

    1

    1

    Jhon

    London

    3

    333333

    2

    2

    Danny

    New York

    4

    444444

    2

    2

    Danny

    New York

    5

    555555

    3

    3

    Tom

    Beijing

    6

    666666

    4

    4

    Candy

    Dalian



    4) select * from cid.orders full outer join cid.persons on cid.orders.person_id = cid.persons.person_id;

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    PERSON_ID

    NAME

    CITY

    1

    111111

    1

    1

    Jhon

    London

    2

    222222

    1

    1

    Jhon

    London

    3

    333333

    2

    2

    Danny

    New York

    4

    444444

    2

    2

    Danny

    New York

    5

    555555

    3

    3

    Tom

    Beijing

    6

    666666

    4

    4

    Candy

    Dalian

    (null)

    (null)

    (null)

    5

    Venus

    Chengdu

    (null)

    (null)

    (null)

    6

    Lobna

    Shanghai

    7

    777777

    7

    (null)

    (null)

    (null)

    8

    888888

    9

    (null)

    (null)

    (null)

    9

    999999

    9

    (null)

    (null)

    (null)



    5) select * from cid.orders, cid.persons where cid.orders.person_id = cid.persons.person_id;

    ORDER_ID

    BOOK_NUMBER

    PERSON_ID

    PERSON_ID

    NAME

    CITY

    1

    111111

    1

    1

    Jhon

    London

    2

    222222

    1

    1

    Jhon

    London

    3

    333333

    2

    2

    Danny

    New York

    4

    444444

    2

    2

    Danny

    New York

    5

    555555

    3

    3

    Tom

    Beijing

    6

    666666

    4

    4

    Candy

    Dalian

  • 相关阅读:
    easyui带file上传控件表达提交
    WebApi返回json
    同一个项目中使用MVC控制器和WebAPI控制器
    jquery disabled
    ITIL(Information Technology Infrastructure Library )
    jquery.formatDateTime
    sqlserver 表连接更新字段
    C#分页的总页数算法
    Angular入门教程三
    Angular入门教程二
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2981452.html
Copyright © 2020-2023  润新知