1

私はいくつかのSQLクエリを自分で解決していますが、

と言う質問で

各大陸で最大の国 (面積) を見つけ、大陸、名前、および面積を表示します。

SELECT continent, name, area
 FROM world x 
  WHERE area >= ALL
    (SELECT area FROM world y
        WHERE y.continent=x.continent
          AND area>0)

世界 x と世界 y の意味がわかりません。誰かそれを説明してもらえますか?

4

5 に答える 5

1

x と y はエイリアスです。「WHERE y.continent=x.continent」でテーブルを識別できます

于 2013-07-24T15:39:34.073 に答える
0

xおよびyテーブル エイリアスです。それらを使用して、クエリをより簡潔/読みやすくしたり、ここのように同じテーブルを複数回選択するクエリを使用したりします。

SQL-Server 2005 以降では、次のクエリを使用して目的の結果を得ることができます。

WITH CTE AS
(
    SELECT continent, name, area,
           rank=dense_rank() over(Partition By x.continent Order By area Desc)
    From world 
)
SELECT continent, name, area FROM CTE WHERE rank = 1

DENSE_RANK 最大面積が同じ場合、大陸ごとに複数の国が返される可能性があります。1 つだけが必要な場合は、に置き換えDENSE_RANKますROW_NUMBER

于 2013-07-24T15:40:52.843 に答える
0

x と y は、テーブルのエイリアス (参照用の短い代替名) として使用されます。これにより、2 つの異なるスコープでワールド テーブルを使用できます。

于 2013-07-24T15:39:42.480 に答える
0

x と y は、列を修飾するために使用される単なるエイリアスです。エイリアスがあり、同じテーブルを 2 回使用した場合、列がどのテーブル インスタンスに属しているかが明確ではありません。

あなたの場合、列で同じテーブルの2つのインスタンスを一致させていますcontinent-そしてエイリアスは、何が起こっているのかをSQLエンジンに明確にするために使用されます。

于 2013-07-24T15:39:46.713 に答える
0

これは、一般的に次のように記述されるテーブル名のエイリアスです。

FROM `table` AS `t`
于 2013-07-24T15:40:07.360 に答える