我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySql中子查询内查询示例详解

西北望乡何处是,东南见月几回圆。 月亮又慢悠悠的挂上了天空,趁着睡前梦呓,我就带领各位可爱的读者们探索MySql最后的子查询部分。 说明:有些查询结果出来结果截图与题目要求不一样会出现多余的字段是为了方便展示结果的可读性。实际操作的读者可以
2022-05-25

SpringJPAfind单表查询方法示例详解

这篇文章主要为大家介绍了SpringJPAfind单表查询方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

mysql连接查询、联合查询、子查询原理与用法实例详解

本文实例讲述了mysql连接查询、联合查询、子查询原理与用法。分享给大家供大家参考,具体如下: 本文内容:连接查询联合查询子查询from子查询where子查询exists子查询首发日期:2018-04-11连接查询:连接查询就是将多个表联合
2022-05-12

mysql模糊查询concat()的用法详解

大家都知道concat()函数,是用来连接字符串,今天通过本文给大家介绍mysql模糊查询concat()及concat的用法,感兴趣的朋友跟随小编一起看看吧
2023-02-14

mysql 模糊查询 concat()的用法详解

目录mysql 模糊查询 concat()补充:MySQL之concat的用法一、concat()函数二、concat_ws()函数三、group_concat()函数四、concat_ws()和group_concat()联合使用mysq
2023-02-14

DoytoQuery中的关联查询方案示例详解

这篇文章主要为大家介绍了DoytoQuery中的关联查询方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-27

MySQL中进行跨库查询的方法示例

前言 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询。 一、同服务的跨库查询 同服务的跨库查询只需要在关联查询的时候带上数据名,SQL的写法
2022-05-28

MySQL学习之分组查询的用法详解

目录为什么要分组逐级分组逐级分组对 SELECT 子句的要求对分组结果集再次做汇总计算GROUP_CONCAT 函数GROUP BY 子句的执行顺序该章节来开始学习分组查询,上一章节我们学习了聚合函数,默认统计的是全表范围内的数据,配合上
2022-07-28

图文详解Mysql使用left join写查询语句执行很慢问题的解决

最近工作中遇到一个非常奇怪的问题,mysql中有两张表,test_info和test_do_info需要进行LEFT JOIN关联查询,下面这篇文章主要给大家介绍了关于Mysql使用left join写查询语句执行很慢问题的解决方法
2023-05-16

图文详解Mysql使用left join写查询语句执行很慢问题的解决

目录(一)前言(二)正文1. 表结构/索引展示(1)表结构(2)各表索引情况2. 存在性能问题的SQL语句3. 解决思路(1)执行计划思路调优(2)字符集匹配调优(三)总结1. 关于执行计划中TYPE的性能比较2. 关于left join优
2023-04-14

mysql 使用join进行多表关联查询的操作方法

本文介绍了MySQL多表关联查询(JOIN)的操作方法,包括JOIN条件、JOIN类型(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLJOIN)、JOIN语法和示例。此外,还介绍了高级JOIN选项,如NATURALJOIN、USINGJOIN和CROSSJOIN。最后,提供了优化JOIN查询的建议,如创建索引和选择较小的表作为左表。通过理解这些概念,用户可以创建高效的关联查询,提取有意义的信息并提高应用程序性能。
mysql 使用join进行多表关联查询的操作方法
2024-04-02

编程热搜

目录