SQL 为嵌套选择创建别名列?

标签 sql database ms-access

假设我有一个Person 表和一个Courses 表。在 Person 表中,我有列 PersonName。在 Courses 表中,假设我有 CourseTitlePersonNameCourseDifficultyCourseDifficulty 是 1-4(4 是最难的)。我如何从 Person 返回人员列表,并且每个人都有一列显示他们在 CourseTitle 上的最难类(class)。

据我所知,我会通过执行以下操作获得 Brett 正在上的最难类(class)的 CourseTitle:

SELECT CourseTitle 
FROM Courses 
WHERE PersonName = 'Brett' 
  AND CourseDifficulty = (SELECT MAX(CourseDifficulty) 
                          FROM Courses 
                          WHERE PersonName='Brett')

但是我如何为 Person 表中的每个人运行它?我希望结果是这样的

Brett-SQL For Dummies 4
Tim-Quantum Mechanics
Jane-Thermodynamics 2

抱歉我的笨拙。在此先感谢您的帮助!

最佳答案

您可以使用以下内容

SELECT p.name ,p.address, c.courseTitle ,c.courseDifficulty FROM (
        SELECT personName, courseTitle, MAX(courseDifficulty) AS courseDifficulty
        FROM course
        GROUP BY personName 
) AS c RIGHT JOIN person AS p ON p.name = c.personName

这里我假设 personName 是唯一的。否则,您可以在此处使用唯一 ID 而不是人名,并在 select 语句中添加此字段。

关于SQL 为嵌套选择创建别名列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355761/

相关文章:

mysql - 在 Hibernate 中查询

在 MS Access 中使用 NULL 值比较的 SQL 查询

sql - 从 VBA 中的 Access 表中删除和添加 ID 键索引

sql - 在 Sequelize 查询 wheres 属性中使用别名?

mysql - 具有相互连接的多个表连接的 SQL 查询

mysql - ruby rails : Datatype foreign key

php - 关于分层 MySQL 数据库设计的建议

Mysql 分区 - 如何对包含唯一列的表进行列表分区?

ms-access - 在代码中设置值而不是 AfterUpdate() 后更新 VBA 表单

sql - 在具有不同名称的列上连接表但在结果中产生单列