程序开发 > MsSql > 正文

Sql内连接、左连接和右连接语句实例

亮术网 2013-05-30 本网原创

  为了减少冗余,不同方面的数据往往存储在不同的表里,为了取得两个或两个以上表格的数据,就必须把相关的表格连接起来,完成此任务就要使用连接查询。常用的连接查询通常有内连接、左连接和右连接。

 

  比如有两个表格,分别是员工表(Employee)和产品表(Product)。

 

  员工表(Employee)为:

  id  Name  Sex  Department

  1  李青云  男  生产部

  2  王婉媗  女  生产部

  3  秦月海  男  生产部

  4  黄玉岚  女  生产部

 

  产品表(Product)为:

  id  Name  ProductDate  Employee_Id

  1  ct电容  2011-10-15  2

  2  dp电容  2011-10-16  1

  3  sc电容  2011-10-17  3

  4  si电容  2011-10-16  0

  5  pi电容  2011-10-18  0

 

  1、内连接

  内连接是要选出两个表中具有交集的所有记录。比如,列出员工及其所生产的产品的详细信息:

  Select e.*,p.* From Employee As e Inner Join Product As p On e.id = p.Employee_Id

  查询结果:

  id  Name  Sex  Department  id  Name  ProductDate  Employee_Id

  1  李青云  男  生产部    2  dp电容  2011-10-16  1

  2  王婉媗  女  生产部    1  ct电容  2011-10-15  2

  3  秦月海  男  生产部    3  sc电容  2011-10-17  3

  从查询结果可能看出,员工表的第4条记录和产品表中的第4、5条记录由于没交集,所以没有被列出。

 

  2、左连接

  左连接是选出所有左表中有的记录,不管右表有没有。比如,列出所有员工详细信息,及其所生产的产品:

  Select e.*,p.* From Employee As e Left Join Product As p On e.id = p.Employee_Id

  查询结果:

  id  Name  Sex  Department  id  Name  ProductDate  Employee_Id

  1  李青云  男  生产部    2  dp电容  2011-10-16  1

  2  王婉媗  女  生产部    1  ct电容  2011-10-15  2

  3  秦月海  男  生产部    3  sc电容  2011-10-17  3

  4  黄玉岚  女  生产部   Null  Null    Null     Null

  查询结果显示,员工表中所有记录都列出了,第4条记录在产品表中没有对应的记录,所有值用 Null 代替。

 

  3、右连接

  右连接与左连接相反,是选出所有右表中有的记录,不管左表有没有。比如,列出所有产品详细信息,及其生产员工:

  Select e.*,p.* From Employee As e Right Join Product As p On e.id = p.Employee_Id

    查询结果:

  id  Name  Sex  Department  id  Name  ProductDate  Employee_Id

  1  李青云  男  生产部    2  dp电容  2011-10-16  1

  2  王婉媗  女  生产部    1  ct电容  2011-10-15  2

  3  秦月海  男  生产部    3  sc电容  2011-10-17  3

  Null Null  Null  Null     4  si电容  2011-10-16  0

  Null Null  Null  Null     5  pi电容  2011-10-18  0

  从查询结果可以得知,产品表中所有记录都列出了,第4、5条记录在员工表中没有对应的记录,所有值用 Null 代替。

本文浓缩标签:左连接右连接内连接sql