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

暗黙の内部結合-それらは等しいですか?

    これらの不平等が常にあるかどうかという問題に対処します。 真実。答えは「いいえ」であり、SQLではありません。ほとんどの場合、それらは同等です。この問題は、暗黙的な型変換で発生します。

    特に、a.idの場合 が数値で、他の列が文字列の場合、次のような状況になります。

    1 = '1'        -- true
    1 = '1.00'     -- true
    '1' = '1.00'   -- false
    

    これ を確認できます。 このdb<>フィドルで。 JOINを使用してこれを設定するのは簡単です。 sですが、FROMにカンマを含むコードを書くつもりはないので 条項、その演習はあなたにお任せします。

    実際には、結合に使用されるIDは同じタイプである必要があります。そうでない場合は、外部キー関係を宣言することさえできません。そのベストプラクティスはさておき、2つのクエリは自動的に同等ではありません。

    注:これは、適切で明示的な標準を使用した場合と同じように当てはまります。 JOIN 構文は、私が強く強くお勧めしますが、排他的に学習して使用することを強くお勧めします。



    1. ActiveRecordクエリはストレートSQLよりもはるかに遅いですか?

    2. MySQLDBレコード間の関係の検出

    3. SQLServerは文字列を日時に変換します

    4. Hibernateでの不要なクエリ-MySql