2017-04-06 9 views
2

이 질문을 던집니다 :SQL에서 MAX 또는 ALL

유럽의 모든 국가보다 큰 국가는 어느 국가입니까? 이 ALL 키워드를 사용하여 여기에

SELECT name 
FROM world 
WHERE GDP >= ALL(SELECT GDP 
        FROM world 
        WHERE population>0 AND continent = 'Europe') 

하고 null 값을 돌볼 필요

웹 사이트에서 제안 된 대답은 (일부 국가에서는 NULL GDP 값을 가질 수있다). 단지 이름을 지정] WHERE population >0

내 솔루션을 사용하여 다음과 같이이다 :

SELECT name 
FROM world 
WHERE GDP >= (SELECT MAX(GDP) 
       FROM world 
       WHERE continent = 'Europe') 

은 내가 MAX 키워드를 사용하고 그것에서 보인다 이 경우 우리는 돌보는 것을 고려할 필요가 없습니다 값

내 솔루션이 맞습니까? 두 가지 솔루션의 절충점은 무엇입니까? MAX

+0

GDP 또는 인구? 유럽이나 세계? –

+0

MySQL, MS SQL Server 또는 Sqlite를 사용하고 있습니까? 관련되지 않은 제품에 태그를 지정하지 마십시오. – jarlh

+0

모호한 점에 대해 사과드립니다. 방금 편집했습니다. –

답변

1

집계 기능 NULL -values ​​무시되므로 조건

... WHERE GDP >= (SELECT MAX(GDP) FROM world WHERE continent = 'Europe') 

의 의미는 다음 사실이다 GDP가 크거나 정의 GDP을 갖는 모든 유럽 국가의 GDP보다 같으면.

그리고 같은 조건에 해당 :

GDP >= ALL(SELECT GDP FROM world WHERE continent = 'Europe' and GDP is not null) 

은 그래서 이것은 당신이 (내가 운동을 그런 식으로 해석하는 것), 당신의 접근 방식이 올바른지 달성하고자하는 것입니다.

0

둘 모두의 성능과 관련하여 매우 작은 콘텐츠가 있습니다. 이 페이지는 at MySQL docs입니다.

  • MySQL은 하위 쿼리 선택 목록 열 색인 가능성을 활용하기위한 시도로 IN, ALL, ANYSOME 하위 쿼리를 다시 작성합니다. 예를 들어

    value {ALL|ANY|SOME} {> | < | >= | <=} (uncorrelated subquery) 
    

    WHERE 절 :

    WHERE 5 > ALL (SELECT x FROM t) 
    

    NULL 값이나 빈 세트 참여하지 않는 한

  • MySQL은 MIN() 또는 MAX()을 포함하는 식을 다음과 같은 형식의 표현을 향상 다음과 같이 옵티마이 저가 처리 할 수 ​​있습니다.

    WHERE 5 > (SELECT MAX(x) FROM t) 
    

따라서; 귀하의 특정 경우에 대해 웹 사이트는 NULL 값이 가능하기 때문에 ALL을 사용한다고 언급합니다.위의 경우가 아니라면 ALLMAX으로 바꿀 수 있습니다.