获取sql列中的第二个最小数字

时间:2013-09-12 18:05:29

标签: mysql

我目前有下面的代码,它可以让我得到2个最小的数字,但我希望得到所有第二个最小的数字,并将它们链接到他们的名字而不是其中一个。我们可以说表中的数字是由这个组成的:

Name| number
----|------
w     2 
a     8 
s     2
e     2
z     3

我想要

w 2
s 2
e 2

现在我刚刚获得w 2

SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table);

3 个答案:

答案 0 :(得分:1)

如果此代码为您提供第二个最小的数字(您想要的):

SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table);

然后只需:

select *
from table
where col = (SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table));

答案 1 :(得分:0)

我不太了解,但是如果你使用的是LIMIT 1,1,那么你只能得到1行或者没有。 只需使用@ 491243对您的问题发表评论。

SELECT * FROM tablename WHERE number = (SELECT MIN(number) FROM tableName);

算了,现在我理解了这个问题。 试试这个:

SELECT * FROM tablename WHERE number =
    (SELECT number FROM tablename WHERE number != 
        (SELECT MIN(number) FROM tablename) ORDER BY number LIMIT 1);

希望这有帮助。

编辑:使用SQLFiddle表:

SELECT * FROM ships WHERE gunsize = (
    SELECT gunsize FROM ships WHERE gunsize != 
        (SELECT MIN(gunsize) FROM ships) ORDER BY gunsize LIMIT 1);

答案 2 :(得分:0)

http://sqlfiddle.com/#!2/9ca94/11

SELECT name,(SELECT MAX(gunsize) FROM ships s2 
WHERE s2.Name=s.name and gunsize not in (select max(gunsize) from ships))as gunsizes
FROM ships s

这样的东西?