SQL中join的用法

简介: SQL中join的用法 第一种:Inner join 解释:产生的结果是A和B的交集(相同列里面的相同值)。内连接是最常见的一种连接,它也被称为普通连接,只连接匹配的行(仅对满足连接条件的CROSS中的列)。

SQL中join的用法

第一种:Inner join

解释:产生的结果是A和B的交集(相同列里面的相同值)。内连接是最常见的一种连接,它也被称为普通连接,只连接匹配的行(仅对满足连接条件的CROSS中的列)。它又分为等值连接(连接条件运算符为"=")和不等值连接(连接条件运算符不为"=",例如between...and)。

SELECT *FROM b INNER JOIN A
on b.name=A.name

第二种:Full Outer Join

解释:产生的结果是A和B的并集(如果没有相同的值会用null作为值)。FULL JOIN 会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替

SELECT * FROM b FULL OUTER JOIN A
on b.name=A.name

第三种:Left outer join

解释:产生表B的完全集,而A表中匹配的则有值(没有匹配的则以null值取代)。LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

SELECT * FROM b Left outer join A
on b.name=A.name

第四种:Right Outer Join

解释:参考第三种Left outer join

SELECT * FROM b Right Outer Join A
on b.name=A.name

第5种:cross join

解释:cross对两个表执行笛卡尔乘积。它为左表行和右表行的每种可能的组合返回一行。返回(左表行数*右表行数)行的表。ps:很少用到这个语法。注意如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。

SELECT * FROM b  cross join A

特殊:Natural Join(oracle的用法,sqlserver里面不支持这种写法。ps:大神可以纠正用法这里)

解释:自然连接是一种特殊的等值连接,在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

相关文章
|
1月前
|
SQL 关系型数据库 MySQL
7种SQL Join语句
7种SQL Join语句
18 1
|
4月前
|
SQL
sql 各种join 对比
sql 各种join 对比
30 0
|
4月前
|
SQL
SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法:
51 1
|
6月前
|
SQL 数据库
04SQL - SQL连接 left join
04SQL - SQL连接 left join
25 0
|
28天前
|
SQL 缓存 算法
SQL 语句不要过多的 join
SQL 语句不要过多的 join
18 1
|
1月前
|
SQL Java 关系型数据库
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
18 0
|
1月前
|
SQL Java 关系型数据库
MyBatis中的9种常用动态sql标签精妙用法
MyBatis中的9种常用动态sql标签精妙用法
60 0
|
2月前
|
SQL 关系型数据库 MySQL
Mysql SQL的一些特殊用法记录
1、查询group by having 中having不起作用,及解决
15 0
|
2月前
|
SQL
SQL语句case when的用法
SQL语句case when的用法
|
3月前
|
SQL Java 数据库连接
这个问题是由于Flink在执行SQL语句时,无法找到合适的表工厂来处理JOIN操作。
【1月更文挑战第17天】【1月更文挑战第85篇】这个问题是由于Flink在执行SQL语句时,无法找到合适的表工厂来处理JOIN操作。
23 8