当前位置: 首页 > news >正文

SQL理解——INNER JOIN

文章目录

  • SQL语句
  • 需求
  • 使用 INNER JOIN 的原因

SQL语句

    /*** 查询两个用户之间共有的单聊 sessionId** @param userId1 第一个用户的ID* @param userId2 第二个用户的ID* @return 共有的单聊 sessionId 列表*/@Select("SELECT us1.session_id " +"FROM user_session us1 " +"INNER JOIN user_session us2 ON us1.session_id = us2.session_id " +"INNER JOIN session s ON us1.session_id = s.id " +"WHERE us1.user_id = #{userId1} " +"AND us2.user_id = #{userId2} " +"AND s.type = 1 " +"AND s.status = 1 " +"AND us1.status = 1 " +"AND us2.status = 1")List<Long> findCommonSingleChatSessionIds(@Param("userId1") Long userId1, @Param("userId2") Long userId2);

需求

在代码中,目标是查询两个用户之间共有的单聊会话sessionId。
具体需求是:
找到两个用户都参与的会话。
确保这些会话是单聊(type = 1)且状态有效(status = 1)。

使用 INNER JOIN 的原因

匹配需求:代码的目标是找到两个用户都参与的会话,这意味着只有当两个用户在user_session表中都有记录时,才认为这是一个有效的会话。INNER JOIN正好满足这个需求,它只返回两个表中匹配的记录。
数据完整性:在这个场景中,我们不需要保留任何一个用户的所有记录,而是需要找到两个用户共同参与的会话。因此,INNER JOIN是更合适的选择。
性能优化:INNER JOIN通常比LEFT JOIN更高效,因为它只处理匹配的记录。在这个场景中,使用INNER JOIN可以提高查询效率。

使用 LEFT JOIN 的问题:
返回多余的数据:LEFT JOIN会返回左表中的所有记录,即使右表中没有匹配的记录。这会导致查询结果中包含不相关的数据,不符合我们的需求。
性能下降:LEFT JOIN需要处理更多的数据,尤其是当左表比右表大得多时。这可能会导致查询效率降低。

http://www.lryc.cn/news/606383.html

相关文章:

  • LLM残差流为何会超过1?
  • 五、cv::SparseMat的介绍和使用
  • CHI - Transaction介绍(1) - Dataless
  • MySQL 中 CHAR 和 VARCHAR 类型有什么区别?
  • 化学结构式解读指南:从基础认知到InDraw智能识别
  • TDengine 中 TDgp 中添加算法模型(预测分析)
  • 智慧城市多源监控协同精度↑28%:陌讯多模态融合算法实战解析
  • Git 详细安装配置教程(Windows版)
  • QT5 widget控件设置背景图不生效的解决方案
  • systmctl的作用,使用场景和用法
  • Maven 与单元测试:JavaWeb 项目质量保障的基石
  • 对于前端工程化的理解
  • Day07_C++编程
  • day066-内容分发网络(CDN)与web应用防火墙(WAF)
  • 【动态规划】数位dp
  • QT收费情况
  • SpringBoot实战:高效Web开发
  • SAM附录详解
  • Android依赖注入框架Hilt入门指南
  • iOS软件性能监控实战指南 开发到上线的完整流程解析
  • 上传文件到服务器
  • C++11特性——右值引用与移动语义
  • 基于大模型的知识库落地实施策略
  • 硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木
  • opencv解迷宫
  • 图论:SPFA算法
  • 20250731在荣品的PRO-RK3566开发板的Android13下解决敦泰的FT8206触控芯片的只有4点触控功能
  • 经典算法之美:冒泡排序的优雅实现
  • 【计算机网络】IP地址、子网掩码、网关、DNS、IPV6是什么含义?计算机中如何设置子网掩码与网关?
  • 分类-鸢尾花分类