mysql - 如何选择具有其他列最大值的列,以及另一个表中列的所有对应行?
问题描述
两个给定的表:
问题:选择费用最高的活动以及在其中注册的学生的姓名。
结果应该是:活动栏(高尔夫)和学生栏(马克安东尼)。在这种情况下,只有一个学生注册,但如果有更多学生注册,我想说明一个案例。
我尝试了各种解决方案,但似乎无法正确解决。
任何提示表示赞赏,谢谢。
编辑:我看到我被否决了,我不想展示我尝试过的东西,因为我认为它离题了,但这里有一些:
SELECT s.Student, a.Activity from Activities as a inner join Students as s
ON a.ID = s.ID where a.Cost = (select max(a.Cost))
SELECT s.Student, a.cost, a.Activity from Activities as a inner join Students `as s ON a.ID = s.ID`
group by s.Student having a.cost = max(a.cost)
解决方案
以下查询有效。
CREATE TABLE activity ( `ID` INTEGER, `Activity` VARCHAR(8), `Cost` INTEGER ); INSERT INTO activity (`ID`, `Activity`, `Cost`) VALUES ('84', 'Swimming', '17'), ('84', 'Tennis', '36'), ('100', 'Squash', '40'), ('100', 'Swimming', '17'), ('182', 'Tennis', '36'), ('219', 'Golf', '47'), ('219', 'Swimming', '15'), ('219', 'Squash', '40');
CREATE TABLE students ( `Student` VARCHAR(11), `ID` INTEGER ); INSERT INTO students (`Student`, `ID`) VALUES ('John Smith', '84'), ('Jane Bloggs', '100'), ('John Smith', '182'), ('Mark Antor', '219');
SELECT Student,Activity FROM students s INNER JOIN ( SELECT id,Activity FROm activity WHERE Cost = (SELECT MAX(Cost) FROM activity)) a ON s.ID = a.id
学生 | 活动 :--------- | :-------- 马克安托 | 高尔夫球
db<>在这里摆弄
推荐阅读
- javascript - 禁用路由的本地化 - Next.js 中的 i18n
- php - Laravel 自定义 WebSocket 处理程序
- javascript - SwiftUI WKWebview 如何将变量传输到 html?
- javascript - 使用 javascript 为所有 div 元素添加“onmouseover”功能
- mysql - 如何在mysql中进行数据透视
- docker - 根据 dns 地址访问不同 docker 容器上的不同网站
- cmake - 如何让 CMake 自动检测 CUDA_ARCHITECTURES 的值?
- java - 如何在 JPA 中将对象转换为实体
- android - android native crash by lib64/libhwui.so ,以及如何定位问题
- r - 匹配R中两个数据帧的模糊字符串