如何在SQLite中编写带有子查询值条件的CASE语句

如何在SQLite中编写带有子查询值条件的CASE语句,sqlite,subquery,case-expression,Sqlite,Subquery,Case Expression,Highschooler表的数据格式如下: 高中生(身份证、姓名、年级) 中文:在某一年级,有一个高中生有唯一的ID和一个已知的名字 表中的样本数据为: ID NAME GRADE 1510 Jordan 9 1689 Gabriel 9 1381 Tiffany 9 1709 Cassandra 9 1101 Haley 10 1782 Andrew 10 1468 Kris

Highschooler表的数据格式如下:

高中生(身份证、姓名、年级)

中文:在某一年级,有一个高中生有唯一的ID和一个已知的名字

表中的样本数据为:

ID       NAME      GRADE
1510    Jordan      9
1689    Gabriel     9
1381    Tiffany     9
1709    Cassandra   9
1101    Haley       10
1782    Andrew      10
1468    Kris        10
likes表包含以下格式的数据:

喜欢(ID1,ID2)

中文:ID1的学生喜欢ID2的学生。喜欢一个人不一定是相互的,所以如果(123456)在喜欢表中,就不能保证(456123)也存在

表中的样本数据如下所示:

ID1      ID2
1689    1709
1709    1689
1782    1709
1911    1247
1247    1468
1641    1468
1316    1304
1501    1934
1934    1501
1025    1101
 DIFFERENCE STUDENT_GRADE STUDENT_NAME STUDENT_LIKED_GRADE STUDENT_LIKED_NAME

    0         9           Cassandra          9         Gabriel
    0         9           Gabriel            9         Cassandra
    1         10          Andrew             9         Cassandra
    2         12          John               10        Haley
现在我的问题是:

对于每个喜欢比自己小2级或2级以上的学生,请返回该学生的姓名和年级,以及他们喜欢的学生的姓名和年级

为了实现这一点,我写了下面的查询,在这里我可以得到学生的数据,喜欢的学生和他们的成绩。我要做的是减去喜欢的学生和学生自己的分数,如果分数>=2,那么我输出学生的详细信息。在这个失败的案例陈述中,我试图做的就是检查分数

当我执行内部查询时,子查询运行时没有任何问题,这意味着我能够获取学生的所有详细信息。子查询结果如下:

ID1      ID2
1689    1709
1709    1689
1782    1709
1911    1247
1247    1468
1641    1468
1316    1304
1501    1934
1934    1501
1025    1101
 DIFFERENCE STUDENT_GRADE STUDENT_NAME STUDENT_LIKED_GRADE STUDENT_LIKED_NAME

    0         9           Cassandra          9         Gabriel
    0         9           Gabriel            9         Cassandra
    1         10          Andrew             9         Cassandra
    2         12          John               10        Haley
它只是在CASE语句中给出了一个错误

错误代码:1109。字段列表中的未知表“INTER1”

我怎样才能做到这一点?我已经试过了,如果……那么,但没能成功


请帮忙

这给出了必要的答案:

SELECT INTER1.STUDENT_GRADE, 
       INTER1.STUDENT_NAME, 
       INTER1.STUDENT_LIKED_GRADE,
       INTER1.STUDENT_LIKED_NAME 
       FROM 
       (SELECT (H1.grade-H2.grade) AS GRADE_DIFFERENCE, 
                H1.grade AS STUDENT_GRADE, 
                H1.name AS STUDENT_NAME, 
                H2.grade AS STUDENT_LIKED_GRADE, 
                H2.name AS STUDENT_LIKED_NAME
        FROM Highschooler H1
        INNER JOIN Likes L
        ON H1.ID = L.ID1
        INNER JOIN Highschooler H2 
        ON H2.ID = L.ID2) INTER1
        WHERE INTER1.GRADE_DIFFERENCE >=2;

请提供一些示例数据和所需输出。(有关如何添加的信息,请参见。)@CL。我已按照建议添加了详细信息。如果你想知道更多的细节,我会把它们包括进去。谢谢。假设内部查询的输出是一个表。如何检索
差异
列至少为两行的行?从差异>=2@CL.算出了。。。。