sql 表连接, union
2014-12-23 19:15
435 查看
先说简单的,union就是把两个结果集合并到一起,union有去重的功能.
union all跟union功能一样只是没有去重功能,所以效率较高(没有排序去重的过程,确定不会有重复的话用unionall好些)
union就是把结果集简单的合在一起(union要检查重复).并到同一列里 如果俩的列都起了别名只要第一个的.
select da.id 一 from j_yhda da where da.yhmc like '范%'
union
select qf.id 二 from s_qf qf where qf.yhid like '3%'
就是简单的合在一起 第二个select的二不要了
union 检查重复,union all不检查重复(很简单的合在一起).
表连接.
最简单的连接:直接做笛卡尔积
,from t1,t2
不带where
.结果集是行数是t1 的行*t2的行, 列数是,t1的列+t2的列
(左边的每一行和右边的所有行连接)
自连接 :自己跟自己连接
select * from test t1 join test t2 on t1.a = t2.b
(就是内连接的一个特例)
内连接(join 或 innerjoin , join ==
innerjoin):
Select * From a Inner Join b On a.id=b.id
//这是不是该叫笛卡尔积的子集?
满足条件的a的行和满足条件的b的行连接 (笛卡尔积是无条件的)
等价于:select * from from a,b
where a.id=b.id
外连接(leftjoin 或 rightjoin
, leftjoin == left outer join
,同)
select da.yhmc , qf.qfje from j_yhda da left join s_qf qf
on da.id = qf.yhid //查出来所有用户,只有张的qfje有值.别人的都没值
这就是外连接.左边的都要,再要符合条件的右边的. (得到的行数为第一个表的行数) (X
错)
等价于
select da.yhmc , qf.qfje from s_qf qf right
join j_yhda da
on da.id = qf.yhid
就是满足一边的和另一边的所有的
(leftjoin是左边的所有 和右边的满足条件的 右边没满足的就是一个空值)
全连接(full join , fulljoin == full out join)
就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。
如下这四条记录.
Carter 77895
Carter 44678
Bush
34764
如果是left join 的话,有1,2,3记录
如果是right join 的话,有1 2 4记录.
full join就是 1 2 3 4都有
join是连接查询,子查询通常更好,子查询下一篇说
union all跟union功能一样只是没有去重功能,所以效率较高(没有排序去重的过程,确定不会有重复的话用unionall好些)
union就是把结果集简单的合在一起(union要检查重复).并到同一列里 如果俩的列都起了别名只要第一个的.
select da.id 一 from j_yhda da where da.yhmc like '范%'
union
select qf.id 二 from s_qf qf where qf.yhid like '3%'
就是简单的合在一起 第二个select的二不要了
union 检查重复,union all不检查重复(很简单的合在一起).
表连接.
最简单的连接:直接做笛卡尔积
,from t1,t2
不带where
.结果集是行数是t1 的行*t2的行, 列数是,t1的列+t2的列
(左边的每一行和右边的所有行连接)
自连接 :自己跟自己连接
select * from test t1 join test t2 on t1.a = t2.b
(就是内连接的一个特例)
内连接(join 或 innerjoin , join ==
innerjoin):
Select * From a Inner Join b On a.id=b.id
//这是不是该叫笛卡尔积的子集?
满足条件的a的行和满足条件的b的行连接 (笛卡尔积是无条件的)
等价于:select * from from a,b
where a.id=b.id
外连接(leftjoin 或 rightjoin
, leftjoin == left outer join
,同)
select da.yhmc , qf.qfje from j_yhda da left join s_qf qf
on da.id = qf.yhid //查出来所有用户,只有张的qfje有值.别人的都没值
这就是外连接.左边的都要,再要符合条件的右边的. (得到的行数为第一个表的行数) (X
错)
等价于
select da.yhmc , qf.qfje from s_qf qf right
join j_yhda da
on da.id = qf.yhid
就是满足一边的和另一边的所有的
(leftjoin是左边的所有 和右边的满足条件的 右边没满足的就是一个空值)
全连接(full join , fulljoin == full out join)
就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。
如下这四条记录.
Carter 77895
Carter 44678
Bush
34764
如果是left join 的话,有1,2,3记录
如果是right join 的话,有1 2 4记录.
full join就是 1 2 3 4都有
join是连接查询,子查询通常更好,子查询下一篇说
相关文章推荐
- sql 表连接, union
- 本地协议的纯java连接sql ser…
- 在连接到SQL Server2005时,在…
- SQL Server 2005 不允许远程连接解…
- SQL Union和SQL Union All用法
- SQL Server连接中的四个最常…
- SQL 连接 JOIN 例…
- SQLServer——Java连接SQL Serv…
- SQL 四大连接详解,秒懂
- JDBC 连接SQL Server报…
- Linux下连接Sql Server
- sqlserver 连接oracle 配置详解 .
- SQL 连接 JOIN 例解。(左连接,右…
- VS2010 VB 连接数据库SQL200…
- java怎么连接sql server 2005
- 在Eclipse中用JDBC连接Sql Se…
- SQL大全(查询分析器快捷鍵,Sysproperties系统表,syscolumns系统表,union,表结构修改,临时表,加一个自动增长列,函数,游标,关联其它表修改,直接调用存储过程,T远程连接专用sql)
- 启动SQL 2005的SQL Server Configuration Manager时显示无法连接到WMI提供程序。你没有权限或者该服务器无访问···
- 连接失败 Sqlstate :'01000' Sql server错误:10061 [Microsoft][ODBC Sql Server Driver][TCP/IP Sockets] c
- SQL Union & Union All 操作符