不相关的表格查询

时间:2016-04-27 12:23:17

标签: sql comparison relationship

我有两个表,一个存储学生考试成绩(tblStudentScores)和另一个存储成绩边界(tblBoundaries)。见下文

tblStudentScores

---------------------
| stuName| testScore |
---------------------
| carl   |    40     |
---------------------
| david  |    35     |
---------------------

tblBoundaries

---------------------
| grade  |   score   |
---------------------
|   A*   |    45     |
---------------------
|   A    |    40     |
---------------------
|   B    |    30     |
---------------------

我想要一个返回学生姓名及其成绩的查询,例如:

---------------------
| stuName|   Grade   |
---------------------
| carl   |     A     |
---------------------
| david  |     B     |
---------------------

1 个答案:

答案 0 :(得分:1)

一种简单的方法使用相关子查询:

select ss.*,
       (select b.grade
        from tblBoundaries b
        where ss.testscore >= b.score 
        order by b.score desc
        fetch first 1 row only
       ) as grade
from tblStudentScores ss;

此查询使用ANSI标准fetch first 1 row only。不同的数据库有不同的表达方式。 。 。 limittop 1,甚至其他方法。