2

わかりました、これ(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テーブルエントリをループし、各 x.region を現在の y.region と一致させる (ネストされた SELECT 内で) db エンジンの観点から考えると、' ' の概念を理解しています... しかし、wtf は ' AND population > 0' を行います? それがないと正解ではないのですが、どうしたらいいのかわかりません...

4

2 に答える 2

2

ここで推測しています。

特定の地域のすべてのレコードで人口が null の場合はどうなるでしょうか?

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

于 2009-01-12T03:48:43.603 に答える
2

その節が存在するのは、人口列に 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)

ALL subqueriesのMySQLドキュメントには、役立つコメントがあります(彼らのものを強調してください):

一般に、NULL値を含むテーブル空のテーブルは「エッジ ケース」です。サブクエリ コードを記述するときは、これら 2 つの可能性を考慮しているかどうかを常に考慮してください。

于 2009-01-12T03:50:01.417 に答える