2013-09-12 3 views
0

В настоящее время у меня есть код ниже, и он работает для получения мне 2 наименьшего числа, но я хочу получить все 2 наименьшие числа и связать их с их именем, а не с только один из них. позволяет сказать, что цифры в таблицах были составлены из этого:Получите второе наименьшее число в столбце sql

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); 
+1

'SELECT * FROM имя_таблицы WHERE число = (SELECT MIN (номер) FROM tableName) '- попробуйте, что –

ответ

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)); 
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); 

Надеется, что это помогает.

EDIT: Использование SQLFiddle таблицы:

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

это не работает –

+0

@WillJamieson ** Что ** не работает? – Kermit

+0

@FreshPrinceOfSO Думаю, он хочет, чтобы один запрос получил вторую наименьшую запись. – Minoru

Смежные вопросы