sql >> データベース >  >> RDS >> Database

SQLの2つのテーブルから行のすべての可能な組み合わせを取得する方法

    問題:

    SQLの2つのテーブルから行のすべての組み合わせを取得する必要があります。

    例:

    ここに2つのテーブルがあります:1つは文字を含みます(letters )、その他には数字が含まれています(numbers ):

    letter
    X
    Y
    number
    0
    1
    2

    ソリューション1:

    letters numbers テーブルでは、CROSS JOINを使用します :

    SELECT *
    FROM letters
    CROSS JOIN numbers;
    

    クエリの結果は次のようになります:

    letter 番号
    X 0
    Y 0
    X 1
    Y 1
    X 2
    Y 2

    ソリューション2:

    CROSSJOINを実行する別の方法は次のとおりです。

    SELECT *
    FROM letters, numbers;
    

    これにより、前のクエリで生成されたものとまったく同じ結果が得られます。

    ディスカッション:

    原則として、CROSS JOIN あるテーブルのすべての行が別のテーブルのすべての行に結合される結果セットを生成します。つまり、最初のテーブルに nが格納されている場合 行と2番目のテーブルにはmが格納されます 行、次にCROSS JOIN 結果はデカルト積になります n×m 行。これが、上記の例のクエリによって返される6つの行がある理由です。

    CROSS JOIN 結合されるテーブル間の行の可能なすべての組み合わせを生成します。関係を指定する必要はありません。したがって、他のJOINsとは異なり 、ONはありません CROSS JOINの句 。


    1. クエリ内の式がいつ評価されるかを評価する

    2. IDENTITY列を広げることによる影響の最小化–パート3

    3. Windows認証を使用してsqlalchemy経由でSQLServerに接続するにはどうすればよいですか?

    4. SQLServerのデータベースからすべてのトリガーを削除または削除する方法