質問

さて、これ(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)

テーブルエントリをループし、各x.regionを現在のデータベースエンジンと一致させるdbエンジンの観点から考えると、「 WHERE y.region = x.region 」の概念を理解していますy.region(ネストされたSELECT内)...しかし、wtfは「 AND母集団> 0 'しますか?それなしでは正しい答えではありませんが、どうしてそうなのかわかりません...

役に立ちましたか?

解決

この句が存在するのは、人口列に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の場合はどうなりますか?

編集:人口の-ve値を無視することは一種のセーフティネットと考えることができます(実際のシナリオではありません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top