mysql - 如何在SQL中比较三个相关表中的两个相关列值
问题描述
我有三个表:学生、朋友和包。学生包含两列:ID 和名称。Friends 包含两列:ID 和 Friend_ID(唯一最好朋友的 ID)。软件包包含两列:ID 和 Salary(提供的薪水为每月数千美元)
我必须编写一个查询来输出那些最好的朋友得到比他们更高薪水的学生的名字。名字必须按照提供给最好朋友的薪水来排序。保证没有两个学生获得相同的薪水。
输出应该是这样的:输出表
解决方案
首先使用他们的 id 加入所有 3 个表,而您将使用他们的朋友 id 获得每个名字。现在您已将朋友 ID 与包裹 ID 加入,同时您将获得朋友的薪水。最后过滤 FRIEND_SALARY>SALARY 。我在这里使用 oracle 语法。希望在mysql中也能正常工作。
select TMP2.NAME name
from (SELECT TMP1.NAME,
PP.ID,
TMP1.SALARY salary,
TMP1.FRIEND_ID,
PP.SALARY friend_salary
FROM packages pp,
(SELECT *
FROM students s, friends f, packages p
WHERE S.ID = F.ID
AND S.ID = P.ID) tmp1
WHERE PP.ID = TMP1.FRIEND_ID) tmp2
where TMP2.FRIEND_SALARY>TMP2.SALARY
推荐阅读
- sql - SQL:如果变量为 NULL 时不使用 LIKE
- bash - 在被脚本使用时在 Vim 编辑器中打开配置文件
- elasticsearch - Elasticsearch 2.4 中的数组字段匹配过滤器的不同值
- python - 在 jupyter notebook 中添加表格边框
- c# - 角色管理器 UI ASP.NET CORE Identity & EF
- python - 从多行字符串python获取所需的值
- mysql - 当项目分为两个特定类别[MySql]时选择单行
- typescript - 赛普拉斯自动化脚本期间未触发淘汰赛计算订阅
- javascript - 如何在具有属性 style="display: none;" 的文本区域内发送文本 通过 C# 和 Selenium
- php - php 和 html 中的日历