我目前有下面的代码,它可以让我得到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);
答案 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
这样的东西?