表的连接查询
2016-03-01 15:03
232 查看
inner join、left join、right join 之间的关系
INNER JOIN 只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。注意:在一个 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOIN
它是以联接关系中的左外的表为基准,右边的表如果没有数据,则以空值NULL填充。
right join基准与left join相反,其余类似。
INNER JOIN 只要在这两个表的公共字段之中有相符值,内部联接将组合两个表中的记录。注意:在一个 INNER JOIN 之中,可以嵌套 LEFT JOIN 或 RIGHT JOIN,但是在 LEFT JOIN 或 RIGHT JOIN 中不能嵌套 INNER JOIN
它是以联接关系中的左外的表为基准,右边的表如果没有数据,则以空值NULL填充。
right join基准与left join相反,其余类似。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行 举例如下: -------------------------------------------- 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 2006032408 -------------------------------------------- 1.left join sql语句如下: select * from A left join B on A.aID = B.bID 结果如下: aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404 5 a20050115 NULL NULL (所影响的行数为 5 行) 结果说明: left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL. -------------------------------------------- 2.right join sql语句如下: select * from A right join B on A.aID = B.bID 结果如下: aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404 NULL NULL 8 2006032408 (所影响的行数为 5 行) 结果说明: 仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充. -------------------------------------------- 3.inner join sql语句如下: select * from A innerjoin B on A.aID = B.bID 结果如下: aID aNum bID bName 1 a20050111 1 2006032401 2 a20050112 2 2006032402 3 a20050113 3 2006032403 4 a20050114 4 2006032404 |
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。相关文章推荐
- linux查看ssh用户登录日志与操作日志
- nutch1.9 + solr4.72
- java命令模式
- Android性能优化之过渡绘制
- 解密WEP和WPA-PSK/WPA-PSK加密的数据包
- sublime
- 初学opengl(一)第一个opengl程序及error LNK2019: unresolved external symbol的解决
- Linux内核版本说明
- B. Sereja and Mirroring
- 程序开发:MVC设计模式与应用
- 把接口转成json数据格式
- 【云计算】Kubernetes、Marathon等框架需要解决什么样的问题?
- 使用Jenkins搭建持续集成(CI)环境
- oracle 分页
- 基于CSS3实现立方体自转效果
- http协议学习系列
- MacBook故障处理
- armv7 armvs7 arm64
- qt4项目到qt5
- select, iocp, epoll,kqueue及各种I/O复用机制