如何在sql查询中将搜索变量增加1

时间:2015-03-16 14:31:13

标签: mysql sql

所以任务是:找到每个评级中最年轻的水手

-

我的桌子:

Sailors(sid : integer, sname : string, rating : integer, age : real)

Reserves(sid : integer, bid : integer, day : date)

Boats(bid : integer, bname : string, color : string)

-

这样的事情是否可能:

select min(age)

from sailors

where rating =(1++)

4 个答案:

答案 0 :(得分:0)

SELECT rating, MIN(age)
FROM Sailors
GROUP BY rating;

请参阅aggregate functions上的MySQL文档。

答案 1 :(得分:0)

select rating,
       min(age)
       from sailors
       where rating in ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 )
       group by rating;

但如果评级是一个表格,那就像

select rating.id,
       min(age)
       from sailors inner join rating
       where rating.id = sailors.rating
       group by rating.id;

以此作为子查询,你可以得到这样的最年轻的水手:

select h.rating,
       sailor.sname,
       sailor.age
from sailor
inner join
     ( select rating,
       min(age) min_age
       from sailors inner join rating
       where rating.id = sailors.rating
       group by rating.id;
     ) h
where h.rating = sailor.rating
and   h.min_age = sailor.age;

答案 2 :(得分:0)

您应该使用GROUP BY

SELECT MIN(age), rating
FROM   Sailors
GROUP BY rating

答案 3 :(得分:0)

select rating,sid,age
 from Sailors as S 
 where (age,rating) 
 in 
 (
     select min(age),rating
      from Sailors
    group by rating
 )

编辑:

您可以select rating,min(age) from sailors group by rating;来获得评分等级的最低年龄,但是您无法获得具有该最低年龄的水手的详细信息。
检查此http://sqlfiddle.com/#!9/55276/1,您可以看到sid的返回值为5而不是8,等级为4 ...
这个http://sqlfiddle.com/#!9/55276/3正确返回sid的位置