我有两个表,一个存储学生考试成绩(tblStudentScores)和另一个存储成绩边界(tblBoundaries)。见下文
tblStudentScores
---------------------
| stuName| testScore |
---------------------
| carl | 40 |
---------------------
| david | 35 |
---------------------
tblBoundaries
---------------------
| grade | score |
---------------------
| A* | 45 |
---------------------
| A | 40 |
---------------------
| B | 30 |
---------------------
我想要一个返回学生姓名及其成绩的查询,例如:
---------------------
| stuName| Grade |
---------------------
| carl | A |
---------------------
| david | B |
---------------------
答案 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
。不同的数据库有不同的表达方式。 。 。 limit
,top 1
,甚至其他方法。