2016-03-22 5 views
0

Можно ли также запросить этот запрос с помощью подзапроса?Получение минимального значения с помощью подзапроса

Что у меня есть:

SELECT name, lifeExpectancy from country 
WHERE lifeExpectancy IS NOT NULL 
ORDER BY lifeExpectancy ASC 
LIMIT 1 

Что результат должен быть:

name  | lifeExpectancy 
------------------------- 
Zambia |   37.2 
+0

Это задание или тестовый вопрос? Его можно было записать с помощью объединенного подзапроса и агрегата 'MIN()', но запрос, который вы заказываете «lifeExpectancy» с «LIMIT», скорее всего, быстрее. –

+0

тестовый вопрос :) – Skupaj

+1

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

ответ

0

Sure:

SELECT name, lifeExpectancy from country 
WHERE lifeExpectancy = (SELECT MIN(lifeExpectancy) FROM country) 
LIMIT 1 

Вам все еще нужно LIMIT 1 в случае, если есть несколько стран, доля максимальная продолжительность жизни. Если lifeExpectancy известен быть уникальным, по крайней мере, максимум, или в порядке с возвратом несколько строк, когда есть связь на первое место, вы можете опустить LIMIT 1:

SELECT name, lifeExpectancy from country 
WHERE lifeExpectancy = (SELECT MIN(lifeExpectancy) FROM country) 
+0

вот так странно, это дает мне: Андорра - 83,5 – Skupaj

+0

спасибо, второй работает! – Skupaj

0

Используйте это:

SELECT name, MIN(lifeExpectancy) AS lifeExpectancy from country; 
+0

Возраст правильный, но страны нет. Это дает мне Аруба - 37.2 – Skupaj

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

  • Нет связанных вопросов^_^