数据库联表跨表查询

来源:互联网 发布:seo什么意思 编辑:程序博客网 时间:2024/05/22 07:47

a表aidname1a12a23a34a4


b表bidnick1a13b35a36b4

1. union  和 union all

将两个表的查询结果合并起来,这个两个不同得是union会将重复的去掉,而union all 无论是否重复都会将查询到的内容全部显示出来。

示例:SELECT name FROM a UNION   SELECT nick FROM b

结果 :a1 a2 a3 a4 b3 b4

SELECT name FROM a UNION ALL  SELECT nick FROM b

结果:a1 a2 a3 a4a1 b3 a3 b4

============================================================

2. 左联 (left join)

以左表为基准,首先取出左表中的全部数据,再加上与右表相匹配的数据。
示例:select * from a left join b on a.aid = b.bid 
先取出a中的全部数据,再加上b表中与a表aid相等的数据
查询结果:1 a1 a1
  2 a2  null
3  a3  b3
4  a4  null

3. 右联 (right join)

与左联正好相反,它是以右表为基准,再加上与左表相匹配的数据
示例:select * from a right join b on a.aid = b.bid
先取出b中的全部数据,再加上a表中与b表aid相等的数据
查询结果 : 1 a1 a1
   3  b3 a3
   5  a3  null
   6  b4 null

4. 内联 (inner join)

他没有表做基准,只查询出相匹配的数据
示例: select * from a inner join b on a.aid = b.bid
查询结果 : 1   a1   a1
   3    a3   b3

5.子查询(in)

通过一个查询语句查询出来的结果是另一个查询语句的查询内容。
示例 : select * from a where aid in(select bid from b)
查询结果 : 1  a1
   3   a3
当然 还有 not in  正好与 in 相反,查询不在 这些结果集里面的 

原创粉丝点击