mysql - SQL 这个 left jion 和 left outer jion 怎么结果是一样的?
巴扎黑
巴扎黑 2017-04-17 14:45:08
0
2
659
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后,我看到结果还是一模一样,用什么例子可以理解加和不加的区别呢?

巴扎黑
巴扎黑

全員に返信(2)
巴扎黑

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
    Peter_Zhu

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

    いいねを押す +0
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート