数据库多表连接,返回结果集
来源:互联网 发布:小米手机自动更新软件 编辑:程序博客网 时间:2024/05/29 13:56
联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。
联接可分为以下几类:
1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。
2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
3、交叉联接
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。
例子:
-------------------------------------------------
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系
--------------------------------------------------
1) 内连接
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
2)左连接
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null
3) 右连接
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
4) 完全连接
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null 3 34 4
3 王武 null
- 数据库多表连接,返回结果集
- JAVA数据库处理(连接,数据查询,结果集返回)
- C#连接MySQL数据库实现DataGridView定时更新数据——多结果集返回
- PHP mysqul连接数据库,执行查询语句,打印返回结果集和断开数据库
- ado.net连接模式访问数据库中datareader的返回多个结果集和mars的使用
- SQL多表查询结果返回实体结果集
- JAVA 数据库查询返回两次结果集
- 返回多个结果集与连接池(由没到有再到好)
- JAVA连接MYSQL通过查询返回的结果集获取表结构字段类型
- 连接两个单向链表,返回排序后的结果。
- python查询数据库结果返回
- jdbctempleate 执行postgres 数据库存储过程返回结果集
- jdbctempleate 执行postgres 数据库存储过程返回结果集
- oracle:数据库查询返回结果集的默认值
- hibernate进行多表查询如何返回结果集?
- jdbc关联模型查询-多表查询返回结果集
- 用C#调用存储过程返回结果集 & 连接查询结果的union
- 用SqlDataReader返回多个结果集
- 一种利用js实现的仿淘宝商品评价功能的方法
- 为什么读研
- IOS8 alertView 和 actionSheet 使用方法
- 【Boost】boost库asio详解5——resolver与endpoint使用说明
- 贪心算法介绍
- 数据库多表连接,返回结果集
- 两段shell脚本,监控进程和主动结束进程
- Git---强大的版本控制工具
- Project2--Lucene的Ranking算法修改:BM25算法
- Linq:基本语法group by, order by ,into(3)
- Redis常用命令
- Java web测试分为6个部分
- 成员函数占内存空间吗
- 如何系统地学习数据挖掘?