返回顶部
首页 > 资讯 > 数据库 >mysql的JOIN用法详解-附带查询示例
  • 734
分享到

mysql的JOIN用法详解-附带查询示例

mysqlandroid数据库 2023-09-23 21:09:46 734人浏览 泡泡鱼
摘要

Mysql的JOIN用法详解-附带查询示例 在 sql 中,JOIN 是用于将多个表中的数据连接在一起的操作。它通过指定连接条件将两个或多个表中符合条件的行组合起来,产生一个新的结果集。 SQL

Mysql的JOIN用法详解-附带查询示例

sql 中,JOIN
是用于将多个表中的数据连接在一起的操作。它通过指定连接条件将两个或多个表中符合条件的行组合起来,产生一个新的结果集。

SQL 中常见的 JOIN 类型包括 INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOIN
下面详细介绍这些 JOIN 类型的用法:

1.INNER JOIN(内连接):它返回两个表中满足连接条件的行。它只返回两个表中共同满足条件的行,不包含不匹配的行。语法如下:

SELECT 列名 FROM1 INNER JOIN2 ON 连接条件;

2.LEFT JOIN(左连接):它返回左边表中的所有行,以及右边表中满足连接条件的行。如果右边表中没有匹配的行,将返回 NULL 值。语法如下:

SELECT 列名 FROM1 LEFT JOIN2 ON 连接条件;

3.RIGHT JOIN(右连接):它返回右边表中的所有行,以及左边表中满足连接条件的行。如果左边表中没有匹配的行,将返回 NULL 值。语法如下:

SELECT 列名 FROM1 RIGHT JOIN2 ON 连接条件;

4.FULL OUTER JOIN(全外连接):它返回两个表中所有的行,无论是否满足连接条件。如果某个表中没有匹配的行,将返回 NULL 值。语法如下:

SELECT 列名 FROM1 FULL OUTER JOIN2 ON 连接条件;

在连接条件中,可以使用比较操作符(如 =、<>、<、>)来指定连接的条件。连接条件可以是一个列的相等条件,也可以是多个列的组合条件。
需要注意的是,JOIN 操作可能会导致结果集中的行数变多,因此需要根据具体的业务需求来选择合适的 JOIN 类型。

附上一段项目实际使用的示例代码:

<select id="getPointDetail" resultType="com.****************">        SELECT        hp.bk_id zdbh,        spb.lng,        spb.lat,        spb.bdrq,        spb.xzq,        spb.ydlx,        spb.ssdzdy as swdzdy,        a.value as wljcdwlxmc,        b.value as jcjlxmc,        c.value as jcjjbmc,        d.value as dxsllxmc,        e.value as hsclxmc,        f.value as ydlxmc,        sgnp.*        FROM hub_point hp        LEFT JOIN sat_groundwater_network_point sgnp ON hp.hid = sgnp.hid        left join sat_point_base spb on spb.hid = hp.hid        left join (select * from sys_dict_item where fk_sort_code = '1019') a on sgnp.wljcdwlx = a.code        left join (select * from sys_dict_item where fk_sort_code = '1017') b on sgnp.jcjlx = b.code        left join (select * from sys_dict_item where fk_sort_code = '1016') c on sgnp.jcjjb = c.code        left join (select * from sys_dict_item where fk_sort_code = '1013') d on sgnp.dxsllx = d.code        left join (select * from sys_dict_item where fk_sort_code = '1012') e on sgnp.hsclx = e.code        left join (select * from sys_dict_item where fk_sort_code = '1001') f on spb.ydlx = f.code        <where>            <if test="id != null and id != ''">                hp.hid = #{id}            </if>        </where>        ORDER BY sgnp.load_dts DESC        LIMIT 1    </select>

这段示例代码是一个sringboot项目maper映射的 SQL 查询语句
下面对代码进行逐行解释:

  1. 第1行: 标签定义了一个查询语句,id 属性为 “getPointDetail”。
  2. 第2行至第20行:这是实际的查询语句,在这些行中,通过 SELECT 关键字选择了多个列作为结果集,并通过 FROM 关键字指定了表。查询语句返回了一个结果集,其中包括了从 hub_point
    表、sat_groundwater_network_point 表和 sat_point_base 表中选择的列。
  3. 第7行至第19行:这是多个 LEFT JOIN 子句,将其他表与 hub_point 表进行连接。通过 ON 子句指定连接条件。每个
    LEFT JOIN 子句连接了一个子查询和一个表,子查询是一个从 sys_dict_item 表中选择特定字段的查询,通过 WHERE
    子句和特定条件进行筛选。
  4. 第22行至第24行: 标签用于包裹 WHERE 子句,用来添加额外的条件。在这里,通过
    标签进行条件判断,如果参数 id 不为空且不为空字符串,则将 hp.hid = #{id} 作为条件添加到 WHERE 子句中。
  5. 第26行:通过 ORDER BY 子句按照 sgnp.load_dts 列进行降序排序
  6. 第27行:使用 LIMIT 子句限制结果集的返回行数为 1。
  7. 以上就是这段代码的简要解释。它查询了多个表,并使用了多个 LEFT JOIN 进行表的连接。同时,它还使用了 WHERE
    子句、ORDER BY 子句和 LIMIT 子句来进一步筛选和排序结果集。

来源地址:https://blog.csdn.net/qq_61950936/article/details/131475806

您可能感兴趣的文档:

--结束END--

本文标题: mysql的JOIN用法详解-附带查询示例

本文链接: https://lsjlt.com/news/416648.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作