sql语句中两表连结方式主要有一下3中,需要注意的时在进行多表连结的时候必须要用 on 指定表中的某个字段作为连结的条件
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 -----结果集的条目数以左表为准
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录------结果集的条目数以右表为准
inner join(等值连接) 只返回两个表中联结字段相等的行------结果集的条目数为联结字段相等的行数
看一下例子
Table_1
1 t1 张三 男
2 t1 小白 女
3 t1 王子 男
4 t1 王小 女
5 t1 李白 男
6 t1 赵虎 男
7 t1 张果 女
-----------------------------------------------------------------------------------------
Table_2
1 t2 王五
2 t2 小五
4 t2 王五
5 t2 赵雪
8 t2 张龙
------------------------------------------------------------------------------------------
left join
select * from Table_1 left join Table_2 on Table_1.ID = Table_2.ID
结果是:
1 t1 张三 男 1 t2 王五
2 t1 小白 女 2 t2 小五
3 t1 王子 男 NULL NULL NULL
4 t1 王小 女 4 t2 王五
5 t1 李白 男 5 t2 赵雪
6 t1 赵虎 男 NULL NULL NULL
7 t1 张果 女 NULL NULL NULL
--------------------------------------------------------------------------------------------
right join
SELECT * FROM Table_1 right join Table_2 on Table_1.ID = Table_2.ID
结果是:
1 t1 张三 男 1 t2 王五
2 t1 小白 女 2 t2 小五
4 t1 王小 女 4 t2 王五
5 t1 李白 男 5 t2 赵雪
NULL NULL NULL NULL 8 t2 张龙
--------------------------------------------------------------------------------------------
inner join
select * from Table_1 inner join Table_2 on Table_1.ID=Table_2.ID
结果是:
1 t1 张三 男 1 t2 王五
2 t1 小白 女 2 t2 小五
4 t1 王小 女 4 t2 王五
5 t1 李白 男 5 t2 赵雪
----------------------------------------------------------------------------------------------
总结:left join与right join 的区别主要是在于基础表是左表还是右表,对于不满足基础表联结字段的行将会有null填充
语法:from Table_1 LEFT JOIN Table_2 ON Table_1.columnName compopr Table_2.columnName
columnName必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr指定的运算符有:"=", "<", ">", "<=", ">=" 或 "<>"
----------------------------------------------------------------------------------------------
这次先分享到这里,有不完整之处还请广大网友进行补充,过段时间再分享多表联结查询不重复的数据