如何合并表格中的值

时间:2019-02-07 01:13:47

标签: sql sqlite

数据库中有模式学生(名称为TEXT,分数为INTEGER),并且有一个名为成绩的表:

Grade   MIN_score    MAX_score
A       4            5
B       3            4
C       2            3

我想根据该表选择所有学生的姓名及其成绩,然后在结果表中将A和B设置为“通过”。

下面是我的部分解决方案,而没有在结果表中将A和B设置为“通过”,我想知道如何实现该附加功能。

SELECT name, grade
FROM students 
LEFT JOIN grades 
ON grade BETWEEN MIN_score and MAX_score;

2 个答案:

答案 0 :(得分:3)

请勿使用select s.name, s.score, (case when g.grade in ('A', 'B') then 'Pass' end) as status from students s join grades g on s.score > g.MIN_score and s.score <= MAX_score; 。您会得到重复。

join

您需要非常注意between的情况,以使得分“ 4”不会同时被视为“ A”和“ B”(就像let i = 0, ta, co; const tuples = []; while ((ta = localStorage.getItem('ts_ta_' + ++i)) && (co = localStorage.getItem('ts_co_' + i))) { tuples.push(`(${ta}, ${co})`); } console.log(tuples.join(' ')); 那样)。 / p>

答案 1 :(得分:1)

您需要使用case when表达式,例如:

select case when grade in ('A', 'B') then 'Pass' else '' end

我相信您的查询应该是这样的:

select name, score, case when grade in ('A', 'B') then 'Pass' else '-' end
from students
join grades on score between MIN_score and MAX_score