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

クロス結合を使用することと、2つのテーブルの間にコンマを入れることの違いは何ですか?

    それらは意味的に同一であるため、同じ結果を返します。これ:

    select * 
      from A, B
    

    ...は(wince)ANSI-89構文です。テーブルをリンクするWHERE句がないと、結果はデカルト積になります。これはまさに代替案が提供するものです:

        select * 
          from A 
    cross join B
    

    ...ただし、CROSSJOINはANSI-92構文です。

    パフォーマンスについて

    それらの間にパフォーマンスの違いはありません。

    ANSI-92を使用する理由

    ANSI-92構文を使用する理由は、OUTER JOINサポート(つまり、LEFT、FULL、RIGHT)のためです。ANSI-89構文には何も含まれていないため、多くのデータベースが独自に実装されています(他のデータベースには移植されません)。 )。 IE:Oracleの(+) 、SQLServerの=*



    1. SQL Serverで参照エンティティを検索します:sys.dm_sql_referencing_entities()

    2. MySQL:ALTERIGNORETABLEは整合性制約違反を与えます

    3. MySQLで行ジェネレータを作成するにはどうすればよいですか?

    4. SSMS 2019(v18)の拡張機能を作成する方法