2013-09-11 1 views
1

У меня есть таблица с двумя полями следующим образом,получить все вторые наивысочайшие значения из таблицы тузда

name score 
xyz  300 
pqr  200 
abc  300 
mno  100 
erp  200 
yut  200 

Как я могу получить весь вторые высокий балл из приведенных выше таблиц, используя запрос MySQL. Происходило следующим образом,

SELECT name, MAX(`score`) 
FROM score 
WHERE score < (
SELECT MAX(score) 
FROM score) 

но оно возвращает одно значение.

Ожидаемый результат

name score 
pqr  200 
erp  200 
yut  200 

Любая помощь, пожалуйста,

+0

Что такое «второе по величине»? Если есть «3 3 3 3 3 2 2 2 1 1 1 1' - какие здесь самые высокие? – zerkms

+0

Каков ваш ожидаемый результат для данных выше? – rakeshjain

+0

«Ожидаемый результат» - что, если было несколько значений «300»? – zerkms

ответ

1

Вы можете использовать:

SELECT 
    `name`, 
    `score` 
FROM 
    `score` 
WHERE 
    `score`=(SELECT DISTINCT `score` FROM `score` ORDER BY `score` DESC LIMIT 1,1) 

Совет имен таблицы и это столбец с одинаковыми именами будут вызывать проблемы в сложных запросах (вы, а не для СУБД)

+0

Итак, для '3 3 1' он вернет' 3 3', правильно? – zerkms

+0

не должно быть предела 1,1? – rakeshjain

+0

@rakeshjain, да. Спасибо –

0

Созданный образец здесь на sqlfiddle и он отображается в соответствии с вашим исключением.

http://sqlfiddle.com/#!2/ce7a1/1

SELECT name, score 
FROM score 
WHERE score = (SELECT MAX(score) FROM score WHERE score < (SELECT MAX(score) FROM score)) 
+0

Это совсем не масштабируется. Как это решение будет масштабироваться, когда нам понадобится третье высшее значение? Как насчет 4-го наивысшего значения? И n-е высшее? – Pacerier

0

Если второй высокий балл и разделенный запятыми список имен, что второй высокий балл хорошо, это может быть сделано с помощью одного запроса, как показано ниже

SELECT group_concat(name) as names,`score` FROM `score` group by `score` 
ORDER BY `score` DESC LIMIT 1,1 
0

Простой запрос

SELECT name, score 
FROM score 
WHERE score=(SELECT DISTINCT score FROM score ORDER BY score DESC LIMIT 1,1) 
Смежные вопросы