如何从具有两个条件的行中选择一些列?

时间:2019-04-19 05:32:44

标签: mysql

我试图显示一个表中有两个条件的行: 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');

它将显示来自不同行的数据。

3 个答案:

答案 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