検索

ホームページ  >  に質問  >  本文

mysql - SQL 这个 left jion 和 left outer jion 怎么结果是一样的?

SELECT b.id,b.cid,b.name,t.type FROM shbooks b LEFT JOIN shtype t ON t.id = b.cid;

SELECT b.id,b.cid,b.name,t.type FROM shbooks b LEFT OUTER JOIN shtype t ON t.id = b.cid;

不加OUTER的时候,我完全能理解,把表1在表2对应的类名显示出来,

但是加上 OUTER后,我看到结果还是一模一样,用什么例子可以理解加和不加的区别呢?

巴扎黑巴扎黑2785日前662

全員に返信(2)返信します

  • 巴扎黑

    巴扎黑2017-04-17 14:47:08

    LEFT JOIN と LEFT OUTER JOIN は同じですが、通常、SQL ステートメントを作成するときに OUTER が省略される点が異なります。これは、内部結合と同様に理解できます。内部結合を記述するときは、通常、INNER を省略して JOIN を直接記述します。

    複数のテーブル リンクが存在します

      <リ>

      内部結合 (JOIN または INNER JOIN)

      SELECT * FROM a [INNER] JOIN b ON a.id=b.id
      <リ>

      外部結合

        <リ>

        左結合または左外部結合 (LEFT JOIN または LEFT OUTER JOIN)

        SELECT * FROM a LEFT [OUTER] JOIN b ON a.id=b.id
        <リ>

        右結合または右外部結合 (RIGHT JOIN または RIGHT OUTER JOIN)

        SELECT * FROM a RIGHT [OUTER] JOIN b ON a.id=b.id 
        <リ>

        完全な外部結合は、キー UNION を介して左結合ステートメントと右結合ステートメントを接続することです

        SELECT * FROM a LEFT [OUTER] JOIN b ON a.id=b.id
        連合
        SELECT * FROM a RIGHT [OUTER] JOIN b ON a.id=b.id
    • クロス結合 (CROSS JOIN)、これにはデカルト積が関係します。デカルト積についての私の個人的な理解は、2 つのテーブルの交差結合です。したがって、取得されるセット結果は、テーブル A の条件を満たすクエリのレコード * テーブル B の条件を満たすレコードになります。

    これには小さな落とし穴があります。つまり、内部結合や外部結合のようにステートメントに ON を追加することはできません。追加すると、クエリ結果は内部結合のようになります。

    SELECT * FROM a CROSS JOIN b where a.id=1

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 14:47:08

    これら 2 つは同じである必要があります。
    左結合は左外部結合の略です。
    拡張説明と警告表示を使用すると、データベースの最適化と再書き込み後のステートメントを確認できます。これらの 2 つの SQL は同じです。

    返事
    0
  • キャンセル返事