2015-01-23 2 views
1

У меня есть стол с людьми, их возраст и их удивительность в каждом возрасте.Выберите значение, когда другое столбец имеет наибольшее значение

Каков самый простой запрос, чтобы получить «удивительность» Джона в их максимальный возраст?

Люди

Name Age Awesomeness 
Don 1  12 
Don 2  23 
Don 3  43 
Don 4  30 
Sam  1  9 
Sam  2  18 
Sam  3  59 
Sam  4  99 

Лучший запрос у меня есть:

SELECT awesomeness 
FROM people 
JOIN (
    SELECT MAX(age) 
    FROM people 
    WHERE name = 'Don' 
) a 
ON people.age = a.age 
WHERE people.name = 'Don' 
+0

Что должно произойти, если есть две строки с одинаковым именем и возрастом? – cdhowie

+0

вернуться как пожалуйста :) –

+0

В этом случае у вас есть трюк. – cdhowie

ответ

1

Просто используйте order by и limit:

SELECT awesomeness 
FROM people 
WHERE people.name = 'Don' 
ORDER BY age desc 
LIMIT 1 
+0

У меня тоже была эта мысль, но см. Комментарий к их вопросу. :( – cdhowie

+0

на самом деле возвращение 1 в порядке, извините, что cdhowie! –

0

Вы можете быть желая показать счет каждого в их максимального возраста ,

Вы можете сделать это с этим запросом: http://sqlfiddle.com/#!2/b0ff4/1/0

SELECT a.name, a.awesomeness 
    FROM people a 
    JOIN (
     SELECT name, MAX(age) age 
      FROM people 
      GROUP by name 
     ) b ON a.name = b.name AND a.age=b.age 
+0

Спасибо Ollie - в этом случае просто ищет один человек –

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