我试图显示一个表中有两个条件的行: 1)GPA最高的学生 2)申请日期在YYYY-MM-DD之前。
我之所以不使用*作为Select的原因是因为有些列我不想显示。
SELECT firstName
,lastName
,applicationDate
,gpa
FROM Student
WHERE MAX(gpa)
AND applicationDate < 'YYYY-MM-DD');
我在写条件声明时遇到问题。
当我输入如下代码时:
SELECT firstName
,lastName
,applicationDate
,MAX(gpa)
FROM Student
WHERE applicationDate < 'YYYY-MM-DD');
它将显示来自不同行的数据。
答案 0 :(得分:1)
我将在此处使用LIMIT
SELECT
firstName,
lastName,
applicationDate,
gpa
FROM Student
WHERE applicationDate < 'YYYY-MM-DD'
ORDER BY
gpa DESC
LIMIT 1;
这不能解决两个或两个以上的学生可能被要求获得最高GPA的情况。在这种情况下,我们可以在WHERE
子句中使用子查询,例如
WHERE gpa = (SELECT MAX(gpa) FROM Student WHERE applicationDate < 'YYYY-MM-DD')
如果您使用的是MySQL 8+,也可以使用RANK
分析函数。
答案 1 :(得分:0)
使用order by和limit来获得所需的结果,像这样:
SELECT firstName, lastName, applicationDate, gps WHERE applicationDate < 'YYYY-MM-DD' ORDER BY gpa DESC LIMIT 1
答案 2 :(得分:0)
从日期<'2019-01-11'的表中选择max(gpa)作为GPA