A ガソリン カード テーブル:
id、userName、cardNo
1 aaa 222
B給油記録テーブル:
id、number、userName、 CardNo,
1 1234 111
##2 234 bbb left join:select * from B b left join A a on a.userName = b.userName where b.userName=aaa
上記 SQL の on 以降の条件により、userName はテーブル内の複数のエントリに対応します1 ではなく A であり、結果セットはデカルト積になります。表 B の 1 つの項目は、表 A の残りの 2 つの項目を満たします。結果は 2 です。
select * from B b left join A a on a.userName = b.userName and a.cardNo = b.cardNo where b.userName=aaa
上記の SQL では、on 以降の 2 つの条件ではテーブル A 内で一意のデータが 1 つしか見つかりません。そのため、結果はテーブル B 内でどこを満たすデータがいくつあるかとなり、結果セットは次のようになります。データの個数を返します。これは返されたデータの一部です。
右結合:
次の SQL は、上記の左結合と同じ効果があります:
select * from A a right join B b on a.userName = b.userName and a.cardNo = b.cardNo where b.userName=aaainner join:
select * from A a inner join B b on a.userName = b.userName and a.cardNo = b.cardNo where a.userName=aaa
まず、on 以降の条件を見てみましょう。テーブル A のデータが on の 2 つの条件に一致し、B にデータが 1 つだけある場合、 where 条件を満たすデータを 2 つ返します。
select * from B b inner join A a on a.userName = b.userName and a.cardNo = b.cardNo where a.userName=aaa
上記を要約すると、後ろの条件を見て、関連テーブルに 1 つ以上のデータがあるかどうかを確認します。
その他の関連する質問については、PHP 中国語 Web サイトを参照してください:mysql ビデオ チュートリアル
以上がmysqlの左結合、右結合、内部結合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。