Sql 需要使用子查询仅显示“否”

Sql 需要使用子查询仅显示“否”,sql,mysql-workbench,Sql,Mysql Workbench,作为uni教程的一部分,我被告知要修改下面的代码,以便它使用子查询只显示“no” 我尝试使用select语句子查询,当grade=to Max grade时选择no,但它仍然显示所有值 SELECT `no`,`code`,MAX(`grade`) FROM take WHERE `no`=(SELECT `no` FROM take WHERE grade=MAX(`grade`)); 我希望在连接到最高级别的表中只显示行no。

作为uni教程的一部分,我被告知要修改下面的代码,以便它使用子查询只显示“no”

我尝试使用select语句子查询,当grade=to Max grade时选择no,但它仍然显示所有值

SELECT `no`,`code`,MAX(`grade`)
    FROM take
    WHERE `no`=(SELECT `no`
        FROM take
                WHERE grade=MAX(`grade`));
我希望在连接到最高级别的表中只显示行no。

您可能会发现限额查询就足够了:

SELECT no, code, grade
FROM take
ORDER BY grade DESC
LIMIT 1;
如果你只希望一个记录的成绩达到最高,或者如果可能出现平局,你不在乎哪一个平局被退回,那么这将很好地发挥作用。如果要坚持使用子查询方法,请断言等级,而不是no值:

您可以使用join来满足此要求

 select no, code, t2.grade from taket1
 inner join 
    (select max(grade) grade from take) t2 on t2.grade = t1.grade 
你似乎想要:

SELECT t.no
FROM take t
WHERE t.grade = (SELECT max(t2.grade)
                 FROM take t2
                 WHERE t2.no = t.no
                );

也就是说,您需要一个关联子句。correlation子句连接内部表和外部表中的no。但是比较是基于等级的。

在子查询中,获取包含“否”和“最大等级”的行。类似于select*from table_a,其中id在select id from table_a中,其中code='no'和grade=maxgrade
SELECT t.no
FROM take t
WHERE t.grade = (SELECT max(t2.grade)
                 FROM take t2
                 WHERE t2.no = t.no
                );