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 NULL4 t1 王小 女 4 t2 王五 5 t1 李白 男 5 t2 赵雪 6 t1 赵虎 男 NULL NULL NULL7 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.columnNamecolumnName必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。compopr指定的运算符有:"=", "<", ">", "<=", ">=" 或 "<>"
----------------------------------------------------------------------------------------------
这次先分享到这里,有不完整之处还请广大网友进行补充,过段时间再分享多表联结查询不重复的数据
新闻热点
疑难解答