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

MySQL Join 类型

文章目录

  • 1 Join 类型有哪些
  • 2 Inner Join
  • 3 Left Join
  • 4 Right Join
  • 5 Full Join

1 Join 类型有哪些

SQL Join 类型的区别
image.png

  • Inner Join: 左,右表都有的数据
  • Left Join: 左表返回所有的行, 右表没有的补充为 NULL
  • Right Loin: 右表返回所有的行, 左表没有的补充为 NULL
  • Full Outer Join: 左表 + 右表 所有数据

用户表:
image.png
答题表:
image.png

2 Inner Join

查询左表 和 右表都有的数据
用户表 user_no = 1000 和 答题表 user_no = 6543 , 不在交集范围, 没有在查询出来

-- inner join --
select tup.user_no, tup.university, tqpd.question_id, tqpd.result  
    from t_user_profile tup inner join t_question_practice_detail tqpd  
        on tup.user_no = tqpd.user_no;

image.png

3 Left Join

左表返回所有的行, 右表没有的补充为 NULL
用户表 user_no = 1000 对应的答题信息为空, 补充 NULL, 答题表 user_no = 6543 不在查询范围

-- left join --
select tup.user_no, tup.university, tqpd.question_id, tqpd.result  
    from t_user_profile tup left join t_question_practice_detail tqpd  
        on tup.user_no = tqpd.user_no;

image.png

4 Right Join

右表返回所有的行, 左表没有的补充为 NULL
答题表 user_no = 6543 对应的用户信息为空, 补充 NULL, 用户表 user_no = 1000 不在查询范围

-- right join --  
select tup.user_no, tup.university, tqpd.question_id, tqpd.result  
    from t_user_profile tup right join t_question_practice_detail tqpd  
        on tup.user_no = tqpd.user_no;

image.png

5 Full Join

在 MySQL 中没有 Full Join, 可以用 left join 和 right join 实现
用户表 user_no = 1000 对应的答题信息补充 NULL, 答题表 user_no = 6543 对应的用户信息补充 NULL

-- left join and right join --  
select tup.user_no, tup.university, tqpd.question_id, tqpd.result  
    from t_user_profile tup left join t_question_practice_detail tqpd  
        on tup.user_no = tqpd.user_no  
union  
select tup.user_no, tup.university, tqpd.question_id, tqpd.result  
    from t_user_profile tup right join t_question_practice_detail tqpd  
        on tup.user_no = tqpd.user_no;

image.png


http://www.kler.cn/a/103728.html

相关文章:

  • 解决vite打包部署后需手动刷新才能加载新的内容!!!
  • C++初阶:C/C++内存管理
  • 如何构建一个外卖微信小程序
  • jenkins实践篇(1)——基于分支的自动发布
  • 基于Java的新闻发布管理系统设计与实现(源码+lw+部署文档+讲解等)
  • Hive安装配置笔记
  • vs2022 使用git同步报错以及解决每次推送要输入密码问题
  • 如何理解某一个开发框架的意图,从而去写和落代码文件位置不会出错
  • Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤
  • Java学习 2.Java-数据类型与运算符
  • (三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行
  • 【JavaEE】网络编程---TCP数据报套接字编程
  • 13.4 DirectX内部劫持绘制
  • CentOS 7 安装Java环境
  • vue2中,下拉框多选和全选的实现
  • html5语义化标签
  • AI基础软件:如何自主构建大+小模型?
  • 启动两个线程,用另一个线程以通知的终止另一个线程
  • 云原生Docker Cgroups资源控制操作
  • 【多线程】Java如何实现多线程?如何保证线程安全?如何自定义线程池?