MYSQL中的左连接查询和右连接查询

MYSQL中的左连接查询和右连接查询

以前在学校里上数据库的时候一直以为这个查询很复杂,加上经常偷懒,所以也没去研究.今天突然用到,去google搜索了一下,一目了然.诶,很多东西表面上看起来,或则听上去非常复杂,其实你真正去做过以后才知道,如此而已,just so so ,只不过一开始在想当然罢了.实践才是硬道理呀.

A left join B 的连接的记录数与A表的记录数同
A right join B 的连接的记录数与B表的记录数同
A left join B 等价B right join A

table A:
Field_K, Field_A
1              a
3              b
4              c

table B:
Field_K, Field_B
1              x
2              y
4              z

select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a left join b on a.Field_K=b.Field_K

Field_K        Field_A        Field_K        Field_B
———- ———- ———- ———-
1              a              1              x
3              b              NULL          NULL
4              c              4              z

select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a right join b on a.Field_K=b.Field_K

Field_K        Field_A        Field_K        Field_B
———- ———- ———- ———-
1              a              1              x
NULL           NULL           2              y
4              c              4              z

++++++++++++++++++++++++++++++++++++++
这样的。
table1                table2
id,sex1               id       sex2
a         1              a           4
b         0
select id,sex1,sex2 from table1 left join table2 on table1.id=table2.id
则,
id      sex1      sex2
a         1        4
b         0        null
也就是说left join连接左边表中所有记录都会出现,如果根据连接条件在table2中找不到相关记录,则显示为null
right join 则显示右边表中的全部记录。
inner join 则只有符合条件的记录才会出现在结果集中
sql语句整理如下:
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a left join b on a.Field_K=b.Field_K;
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a left outer join b on a.Field_K=b.Field_K;
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a right join b on a.Field_K=b.Field_K;
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a right outer join b on a.Field_K=b.Field_K;
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a inner join b on a.Field_K=b.Field_K;
select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a   join b on a.Field_K=b.Field_K;

select a.Field_K, a.Field_A, b.Field_K, b.Field_B from a , b where a.Field_K=b.Field_K;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注