JOIN的用法

简介: 【8月更文挑战第2天】JOIN的用法

JOIN用于将两个或多个表中的行连接起来,基于表之间的共同字段。常见的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN[^1^][^3^]。以下是具体介绍:

  1. INNER JOIN:INNER JOIN用于返回符合连接条件的所有行[^1^]。它只返回两个表中匹配的记录,即交集。例如,有两个表Websites和access_log,通过site_id字段连接,使用INNER JOIN的SQL语句如下:
    SELECT Websites.id, Websites.name, access_log.count, access_log.date 
    FROM Websites 
    INNER JOIN access_log ON Websites.id=access_log.site_id;
    
    这条查询会返回Websites和access_log表中都有的记录。
  2. LEFT JOIN:与INNER JOIN不同,LEFT JOIN会返回左表中的所有记录,即使在右表中没有匹配的记录[^1^][^4^]。右表中不匹配的部分将被填充为NULL。继续使用上面的表,LEFT JOIN的用法如下:
    SELECT Websites.id, Websites.name, access_log.count, access_log.date 
    FROM Websites 
    LEFT JOIN access_log ON Websites.id=access_log.site_id;
    
    此查询结果将包含Websites表中的所有记录,无论它们在access_log表中是否有匹配项。
  3. RIGHT JOIN:RIGHT JOIN与LEFT JOIN相反,用于返回右表中的所有记录,即使左表中没有匹配的记录[^1^][^4^]。左表中不匹配的部分将被填充为NULL。使用RIGHT JOIN的SQL语句如下:
    SELECT Websites.id, Websites.name, access_log.count, access_log.date 
    FROM Websites 
    RIGHT JOIN access_log ON Websites.id=access_log.site_id;
    
    此查询结果将包含access_log表中的所有记录,无论它们在Websites表中是否有匹配项。
  4. FULL OUTER JOIN:FULL OUTER JOIN返回只要其中一个表中存在匹配的所有行[^1^][^5^]。即返回左表和右表的并集,如果没有匹配的记录则填充为NULL。注意MySQL不支持FULL OUTER JOIN,但可以通过LEFT JOIN和RIGHT JOIN的结合来模拟:
    SELECT Websites.id, Websites.name, access_log.count, access_log.date 
    FROM Websites 
    LEFT JOIN access_log ON Websites.id=access_log.site_id
    UNION
    SELECT Websites.id, Websites.name, access_log.count, access_log.date 
    FROM Websites 
    RIGHT JOIN access_log ON Websites.id=access_log.site_id;
    
    此查询结果将包含Websites和access_log表中的所有记录,无论它们是否有匹配项。

综上所述,理解不同类型的JOIN用法对于优化多表查询至关重要。在实际应用中,根据具体的数据需求和表结构选择合适的JOIN类型,可以显著提高查询效率和准确性。

目录
相关文章
|
3月前
|
人工智能 自然语言处理 安全
阿里云百炼介绍及免费Token领取攻略
阿里云百炼是一站式大模型服务平台,集成Qwen、DeepSeek等百余款多模态模型,支持一键构建AI Agent、RAG知识库与万级并发推理。新用户可免费领取7000万Tokens,90天有效,覆盖文本、图像、代码等场景,零门槛开启AI开发之旅。
2433 14
|
6月前
|
人工智能 自动驾驶 算法
聊聊哈啰出行的测试岗:一位老测试的真心话
哈啰出行作为阿里系出行头部企业,业务覆盖两轮、四轮、自动驾驶等多元场景,测试岗技术体系规范,自动化与硬件测试经验丰富,适合1-3年新人快速成长。薪资中等,加班较多,适合作为职业跳板积累前沿项目经验,但追求高薪或平衡生活者需谨慎选择。
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
595 3
Android利用selector(选择器)实现图片动态点击效果
|
SQL 数据挖掘 数据库
数据库join类型有哪些?
【8月更文挑战第2天】
1545 17
数据库join类型有哪些?
|
数据采集 自然语言处理 Serverless
GPT-Sovits文本转语音服务测评报告
本文介绍了一款基于阿里云函数计算平台部署的GPT-Sovits文本生成语音服务。该服务以其高度仿真的声音合成效果和简便的部署方式受到关注。文章详细描述了技术架构、部署流程、功能测试及性能评估等内容,展示了GPT-Sovits在语音合成领域的卓越表现和广泛的应用前景。
1171 8
|
IDE API 开发工具
什么是 pep 8
【8月更文挑战第29天】
2097 4
|
Java Maven
idea导入maven项目结构不全
idea导入maven项目结构不全
1104 6
|
应用服务中间件 网络安全 nginx
Nginx代理HTTPS到Docker指定端口
Nginx代理HTTPS到Docker指定端口
3304 0
|
安全 Java Maven
如何使用jsoup实现网站登录,cookie保存,查询信息
【6月更文挑战第11天】如何使用jsoup实现网站登录,cookie保存,查询信息
669 1