Еще один вопрос, связанный с SQL: Field> 0?
Хорошо, этот один (3a; проблема с предоставленным ответом) заставила меня почесывать голову:
bbc (имя, область, область, совокупность, gdp)
3a. Найдите самую большую страну в каждом регионе:
SELECT region, name, population
FROM bbc x
WHERE population >= ALL
(SELECT population
FROM bbc y
WHERE y.region = x.region
AND population > 0)
Я понимаю концепцию "WHERE y.region = x.region
", когда я думаю об этом в терминах, когда движок db перебирает записи таблицы и сопоставляет каждый x.регион с текущим y.region(во вложенном SELECT)... но wtf делает "AND population > 0
"? Это не правильный ответ без него, но я не вижу, как не...
Ответы
Ответ 1
Этот пункт существует только потому, что в таблице Европы (для Ватикана) есть запись, которая имеет NULL в столбце популяции. Следующие работы также и я считаю более понятными:
SELECT region, name, population
FROM bbc x
WHERE population >= ALL
(SELECT population
FROM bbc y
WHERE y.region = x.region
AND population IS NOT NULL)
В Документация по MySQL для всех подзапросов есть полезный комментарий (акцент их):
В общем случае таблицы, содержащие значения NULL и пустые таблицы, являются "краевыми случаями". При написании кода подзапроса всегда учитывайте, учитывали ли вы эти две возможности.
Ответ 2
Я размышляю над этим здесь.
Что делать, если для всех записей определенного региона значение null является нулевым?
РЕДАКТИРОВАТЬ: Это можно считать видом социальной сети, чтобы игнорировать ценности в населении (а не сценарий реальной жизни).