Sql 需要使用子查询仅显示“否”
作为uni教程的一部分,我被告知要修改下面的代码,以便它使用子查询只显示“no” 我尝试使用select语句子查询,当grade=to Max grade时选择no,但它仍然显示所有值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。
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
);