仅选择最大列

时间:2017-07-29 01:34:08

标签: mysql

我尝试按grade_level选择最大列。如果我选择了一个小于最大列的列,则不应选择grade_level。

CREATE TABLE sample
(
name VARCHAR(50),
grade_level INT,
money INT
);

INSERT INTO sample (name, grade_level, money) VALUES       
("John", 1, 100),
("John", 2, 200),
("John", 2, 250),
("Shadow", 1, 110),
("Shadow", 2, 300);

SELECT * FROM sample;

name | grade_level | money
 John     1           100
 John     2           200
 John     2           250
 Shadow   1           110
 Shadow   2           300

到目前为止,这是我的示例查询。

SELECT name
     , max(money) 
  FROM sample
WHERE grade_level = (SELECT max(grade_level) FROM sample WHERE grade_level = 2)
GROUP BY name;

输出:

name | money
 John    250
 Shadow  110

正如您在此处看到的那样,如果我将grade_level作为2放在我的WHERE CLAUSE中,它会给我一个正确的价值。但是,如果我将grade_level设为1,那么如何避免选择其他列,因为我只选择了最大列。

2 个答案:

答案 0 :(得分:0)

像这样简单的东西会起作用:

select name, max(money)
from sample
group by grade_level

在GROUP BY子句中使用grade_level而不是名称

答案 1 :(得分:0)

我认为这是你所期待的让我知道我是不是错了

SELECT name, max(money),grade_level FROM sample
GROUP BY name,grade_level;

我为你的答案创造了一个小提琴,请查看它:http://sqlfiddle.com/#!9/48022b/4

编辑:

试试这个:

SELECT name, max(money) FROM sample
WHERE grade_level = (SELECT max(grade_level) FROM sample)
and grade_level = 2
GROUP BY name;

查看小提琴以获取更多信息http://sqlfiddle.com/#!9/48022b/11