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

MySQL:表的内外连接

目录

1.内连接

2.左外连接和右外连接

178. 分数排名 - 力扣(LeetCode)


1.内连接

内连接就是两张表做笛卡尔积,再加上一个筛选条件。

这两个sql语句是一样的。

2.左外连接和右外连接

左外连接就是左表必须是完全显示,即使筛选条件没有成功,右表部分为空,左表部分也要显示出来

案例

-- 建两张表
create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
 create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);

显示所有人的成绩,即使没有成绩也要把人的信息显示出来

右连接也是一样的。

178. 分数排名 - 力扣(LeetCode)

这道题比较难想的一步就是怎么去确定rank排名。

可以同一张表做笛卡尔积,筛选条件t2.score >= t1.score,经过该条件筛选出来的数据就是比t1分数大的数据。

select 
    * 
from 
    Scores s1 inner join Scores s2 on s2.score>= s1.score
order by
    s1.score desc;

以t1.id和t1.sorce分组,聚合统计分组后每张表的数据,就是rank排名,这里需要对相同的分数进行去重,因为分数相同的排名是一样的。

 

select 
    s1.score,
    count(distinct s2.score) as 'rank'
from 
    Scores s1 inner join Scores s2 on s2.score>= s1.score
group by
    s1.id,
    s1.score
order by
    s1.score desc;


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

相关文章:

  • 【大数据】机器学习-----线性模型
  • SpringBoot整合Easy-es
  • G1原理—7.G1的GC日志分析解读
  • vue 与 vue-json-viewer 实现 JSON 数据可视化
  • Android Dex VMP 动态加载加密指令流
  • python检测gitlab中某个标签在一个月内添加和移除了多少次
  • Python爬虫基础——IP反爬虫的应对
  • 工业互联网项目开发工作流及各阶段核心关注点
  • 如何通过openssl生成.crt和.key
  • 如何入门编程
  • CNN张量输入形状和特征图
  • Ubuntu 20.04 安装Cuda 12.2版本踩坑记录
  • 微服务中的日志管理中间件的使用和管理
  • ​​​​​​​​​​​​​​★3.3 事件处理
  • 如何使用PHP构建IoC容器,实现依赖注入!
  • 我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时
  • LKT4304新一代算法移植加密芯片,守护物联网设备和云服务安全
  • 免费送源码:Java+ssm+Android 基于Android系统的外卖APP的设计与实现 计算机毕业设计原创定制
  • 智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)
  • 外部获取nVisual所在层级方法
  • 【系统安全】CVE-2024-49113 Windows轻量级目录访问协议(LDAP)拒绝服务漏洞
  • 45_Lua模块与包
  • USB 驱动开发 --- Gadget 驱动框架梳理(一)
  • 如何开放2375和2376端口供Docker daemon监听
  • 强化学习代码实践1.DDQN:在CartPole游戏中实现 Double DQN
  • Linux第二课:LinuxC高级 学习记录day03