LeetCode_sql_day30(1264.页面推荐)
描述 1264.页面推荐
朋友关系列表:
Friendship+---------------+---------+ | Column Name | Type | +---------------+---------+ | user1_id | int | | user2_id | int | +---------------+---------+ (user1_id, user2_id) 是这张表具有唯一值的列的组合。 这张表的每一行代表着 user1_id 和 user2_id 之间存在着朋友关系。喜欢列表:
Likes+-------------+---------+ | Column Name | Type | +-------------+---------+ | user_id | int | | page_id | int | +-------------+---------+ (user_id, page_id) 是这张表具有唯一值的列的组合。 这张表的每一行代表着 user_id 喜欢 page_id。编写解决方案,向
user_id= 1 的用户,推荐其朋友们喜欢的页面。不要推荐该用户已经喜欢的页面。以 任意顺序 返回结果,其中不应当包含重复项。
返回结果的格式如下例所示。
示例 1:
输入: Friendship table: +----------+----------+ | user1_id | user2_id | +----------+----------+ | 1 | 2 | | 1 | 3 | | 1 | 4 | | 2 | 3 | | 2 | 4 | | 2 | 5 | | 6 | 1 | +----------+----------+Likes table: +---------+---------+ | user_id | page_id | +---------+---------+ | 1 | 88 | | 2 | 23 | | 3 | 24 | | 4 | 56 | | 5 | 11 | | 6 | 33 | | 2 | 77 | | 3 | 77 | | 6 | 88 | +---------+---------+输出: +------------------+ | recommended_page | +------------------+ | 23 | | 24 | | 56 | | 33 | | 77 | +------------------+ 解释: 用户1 同 用户2, 3, 4, 6 是朋友关系。 推荐页面为: 页面23 来自于 用户2, 页面24 来自于 用户3, 页面56 来自于 用户3 以及 页面33 来自于 用户6。 页面77 同时被 用户2 和 用户3 推荐。 页面88 没有被推荐,因为 用户1 已经喜欢了它。
数据准备
Create table If Not Exists Friendship (user1_id int, user2_id int)
Create table If Not Exists Likes (user_id int, page_id int)
Truncate table Friendship
insert into Friendship (user1_id, user2_id) values ('1', '2')
insert into Friendship (user1_id, user2_id) values ('1', '3')
insert into Friendship (user1_id, user2_id) values ('1', '4')
insert into Friendship (user1_id, user2_id) values ('2', '3')
insert into Friendship (user1_id, user2_id) values ('2', '4')
insert into Friendship (user1_id, user2_id) values ('2', '5')
insert into Friendship (user1_id, user2_id) values ('6', '1')
Truncate table Likes
insert into Likes (user_id, page_id) values ('1', '88')
insert into Likes (user_id, page_id) values ('2', '23')
insert into Likes (user_id, page_id) values ('3', '24')
insert into Likes (user_id, page_id) values ('4', '56')
insert into Likes (user_id, page_id) values ('5', '11')
insert into Likes (user_id, page_id) values ('6', '33')
insert into Likes (user_id, page_id) values ('2', '77')
insert into Likes (user_id, page_id) values ('3', '77')
insert into Likes (user_id, page_id) values ('6', '88')
分析
①首先找出用户编号为1 的朋友
提供两种方法
第一种union
select user2_idfrom Friendshipwhere user1_id = 1unionselect user1_idfrom Friendshipwhere user2_id = 1
第二种case when
select casewhen user1_id = 1 then user2_idwhen user2_id = 1 then user1_id end friends from Friendship
② 查询Likes表 条件user_id要在第①问所得出的表种 同时 还不能包括自己(user_id=1)的
select distinct page_id from Likes where user_id in (select user2_idfrom Friendshipwhere user1_id = 1unionselect user1_idfrom Friendshipwhere user2_id = 1)and page_id not in (select page_id from Likes where user_id = 1
代码
# 法一
select distinct page_id
from Likes
where user_id in (select user2_idfrom Friendshipwhere user1_id = 1unionselect user1_idfrom Friendshipwhere user2_id = 1)and page_id not in (select page_id from Likes where user_id = 1);#法二
select distinct page_id
from Likes
where user_id in (select casewhen user1_id = 1 then user2_idwhen user2_id = 1 then user1_id end friendsfrom Friendship)and page_id not in (select page_id from Likes where user_id = 1);
总结
case when 的用法 很奇妙 可以积累一下
遇到涉及到两列的数据 可以考虑使用union 和 case when
相关文章:
LeetCode_sql_day30(1264.页面推荐)
描述 1264.页面推荐 朋友关系列表: Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…...
mysql通过binlog做数据恢复
1 介绍 binlog(二进制日志)在 MySQL 中具有非常重要的作用。它记录了数据库的所有更改操作,主要用于数据恢复、复制和审计等方面。以下是 binlog 的主要作用: 1.数据恢复 binlog 可以用于恢复数据库中的数据。当数据库发生故障时…...
macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法
在macos中,删除文件后, 在清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 出现这个提示,在大多数的情况下是因为数据问题导致,需要通过磁盘管理工具进行修复,修复后才可彻底的清理垃圾桶。 另外…...
vue3 axios ant-design-vue cdn的方式使用
1、vue3 快速上手 | Vue.js <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><div id"app">{{ message }}</div><script>const { createApp, ref } VuecreateApp({setup() {const message ref(Hello …...
neo4j导入csv数据
neo4j数据可视化实践 手动输入数据 - 官方democsv数据导入准备数据数据处理导入步骤① 导入疾病表格② 导入药物表格③导入疾病-药物关系表格 爬虫的csv文件 手动输入数据 - 官方demo 点击之后,按照左边10张图中的代码,复制粘贴熟悉语法 效果如下 csv数据…...
YOLOV8实现小目标检测
YOLOV8小目标检测 前言:: yolo版出现很多,基本大同小异 但是这些差异让我们考虑在实验中使用哪个版本会比较好! 在对小目标检测的过程中,yolov7相比yolov8性能更加好。 如果我们还是想使用yolov8,也是可以实…...
解决 Prettier ESLint 错误
解决 Prettier ESLint 错误 在 Vue.js 项目中使用 ESLint 和 Prettier 时,你可能会遇到类似以下的错误: frontend\src\views\dashboard\MobileConfigPanel.vue1:25 error Delete ␍ …...
百度网盘企业版数据快速上云,数据流转平台 CloudFlow 加速大模型训练迭代
1 项目从何时开始,又是何时结束 一个项目的周期应该如何计算,将计算开始运行作为起点,计算结束运行作为终点? 大模型训练场景中,从 TB/PB 级数据完成收集准备上云,到这些数据被提交至任务开始运行&#x…...
地面站通过SSH连接无人机
地面站通过SSH连接无人机 1.启动SSH服务2.远程连接到无人机处理器 一般无人机机载处理器都安装了ssh服务器 1.启动SSH服务 启动SSH sudo systemctl start ssh设置为开机自启动 sudo systemctl enable ssh检查ssh服务状态 sudo systemctl status ssh查询无人机的ip ifconf…...
【Pytorch】大语言模型中的CrossEntropyLoss
文章目录 前言什么是CrossEntropyLoss语言模型中的CrossEntropyLoss计算loss的前期准备CrossEntropyLoss的输入CrossEntropyLoss的输出 额外说明 前言 在大语言模型时代,我们常常使用交叉熵损失函数来计算loss,因此,理解该loss的计算流程有助…...
安全热点问题
安全热点问题 1.DDOS2.补丁管理3.堡垒机管理4.加密机管理 1.DDOS 分布式拒绝服务攻击,是指黑客通过控制由多个肉鸡或服务器组成的僵尸网络,向目标发送大量看似合法的请求,从而占用大量网络资源使网络瘫痪,阻止用户对网络资源的正…...
C++——用选择法对10个数值进行排序。
没注释的源代码 #include <iostream> using namespace std; int main() { int i,j,min,a[11],temp; cout<<"请输入数组a的十个值:"<<endl; for(i1;i<10;i) { cin>>a[i]; } for(i1;i<9;…...
CSP-CCF★★★201909-2小明种苹果(续)★★★
一、问题描述 二、解答 关键:判断是否发生苹果掉落,使用flag[]数组来标记,1为掉落,0为没有掉落,这样也是为了后续比较连续三棵树是否掉落 误区:用最后一次正数(即最后一次统计苹果个数&#x…...
硬件工程师笔试面试——变压器
目录 9、变压器 9.1 基础 变压器原理图 变压器实物图 9.1.1 概念 9.1.2 变压器组成结构 9.1.3 变压器原理 9.1.4 变压器的类型 9.1.5 应用领域 9.2 相关问题 9.2.1 变压器的工作原理是什么? 9.2.2 如何选择合适的变压器类型? 9.2.3 变压器在实际应用中,如何进行…...
Visual Studio Code( VS Code)倍速提高编程工作效率的免费的源代码编辑器
耕耘于编程二十多年,后端、前端、操作系统、数据库、脚本都做过,各种各样的编程工具,IDE开发环境都用过,但是让我感觉比较好用、容易上手、能够提高工作效率的开发工具还是VS Code,下面我就简单的介绍一下这个广泛使用…...
华为SMU02B1智能通信电源监控单元模块简介
华为SMU02B1是一款智能通信电源监控单元模块,专为5G嵌入式机框设计,它在通信电源管理领域扮演着重要角色。以下是对该产品的详细介绍: 一、产品概述 主要功能:华为SMU02B1能够监控和管理通信电源系统,提供站点监控功能…...
【刷题日记】15. 三数之和
15. 三数之和 两数之和可以用巧思也可以用map 三数之和会更加复杂一点,且这道题还需要考虑避免重复答案! 思路: 特判:检如果nums 为 null 或长度小于 3直接返回空数组。排序:使用 sort对数组进行升序排序。就变成了…...
低级编程语言和高级编程语言
一.区分低级编程语言和高级编程语言的方法 1.低级编程语言 低级编程语言,并不是简单的编程语言,而是写起来很费事的编程语言,如所有编程语言的"祖宗":汇编语言,写起来极其麻烦,说不定一个 int a1; 它就得写好几行,甚至十几行 这样麻烦的编程语言为什么还没消失那,因…...
Spring Boot-API网关问题
****### Spring Boot API 网关问题分析与解决方案 在微服务架构中,API 网关扮演着非常重要的角色。它位于客户端和微服务之间,充当所有外部请求的入口,负责请求的路由、聚合、鉴权、限流等功能。Spring Boot 提供了多种方式实现 API 网关&am…...
三 auto占位符
3.1 重新定义的auto关键字 1.当用一个auto关键字声明多个变量的时候,编译器遵从由左往右的推导规则,以最左边的表达式推断auto的具体类型 int n 5; auto *pn &n, m 10;// 这里auto被推导为 int 所以int m 10;合理 auto *pns &n, m 10.0;/…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...

