转载声明:文章来源https://blog.csdn.net/qq_61950936/article/details/131475806
SQL 中常见的 JOIN 类型包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。
下面详细介绍这些 JOIN 类型的用法:
1.INNER JOIN(内连接)
它返回两个表中满足连接条件的行。它只返回两个表中共同满足条件的行,不包含不匹配的行。语法如下:
SELECT 列名 FROM 表1 INNER JOIN 表2 ON 连接条件;
2.LEFT JOIN(左连接)
它返回左边表中的所有行,以及右边表中满足连接条件的行。如果右边表中没有匹配的行,将返回 NULL 值。语法如下:
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 连接条件;
3.RIGHT JOIN(右连接)
它返回右边表中的所有行,以及左边表中满足连接条件的行。如果左边表中没有匹配的行,将返回 NULL 值。语法如下:
SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 连接条件;
4.FULL OUTER JOIN(全外连接)
它返回两个表中所有的行,无论是否满足连接条件。如果某个表中没有匹配的行,将返回 NULL 值。语法如下:
SELECT 列名 FROM 表1 FULL OUTER JOIN 表2 ON 连接条件;
在连接条件中,可以使用比较操作符(如 =、<>、<、>)来指定连接的条件。连接条件可以是一个列的相等条件,也可以是多个列的组合条件。
需要注意的是,JOIN 操作可能会导致结果集中的行数变多,因此需要根据具体的业务需求来选择合适的 JOIN 类型。
附上一段项目实际使用的示例代码:
这段示例代码是一个sringboot项目maper映射的 SQL 查询语句
下面对代码进行逐行解释:
第1行: 标签定义了一个查询语句,id 属性为 “getPointDetail”。
第2行至第20行:这是实际的查询语句,在这些行中,通过 SELECT 关键字选择了多个列作为结果集,并通过 FROM 关键字指定了表。查询语句返回了一个结果集,其中包括了从 hub_point表、sat_groundwater_network_point 表和 sat_point_base 表中选择的列。
第7行至第19行:这是多个 LEFT JOIN 子句,将其他表与 hub_point 表进行连接。通过 ON 子句指定连接条件。每个LEFT JOIN 子句连接了一个子查询和一个表,子查询是一个从 sys_dict_item 表中选择特定字段的查询,通过 WHERE子句和特定条件进行筛选。
第22行至第24行: 标签用于包裹 WHERE 子句,用来添加额外的条件。在这里,通过标签进行条件判断,如果参数 id 不为空且不为空字符串,则将 hp.hid = #{id} 作为条件添加到 WHERE 子句中。
第26行:通过 ORDER BY 子句按照 sgnp.load_dts 列进行降序排序。
第27行:使用 LIMIT 子句限制结果集的返回行数为 1。
以上就是这段代码的简要解释。它查询了多个表,并使用了多个 LEFT JOIN 进行表的连接。同时,它还使用了 WHERE子句、ORDER BY 子句和 LIMIT 子句来进一步筛选和排序结果集。
帖子还没人回复快来抢沙发