MySQL連結クエリー
3953 ワード
SQLでは、結合は主に6種類に分けられます.
1.内部連結
2つのテーブルの共通のデータを表示します.つまり、2つのテーブルの交差を表示します.
2.左外連結
2つのテーブルのうち、左のテーブルにのみ存在し、右のテーブルには存在しないデータをフィルタします.
後ろのwhere句を付けないと、2つのテーブルの共通部分も表示されます.
3.右外部連結
2つのテーブルのうち、右のテーブルにのみ存在し、左のテーブルには存在しないデータをフィルタします.
後ろのwhere句を付けないと、2つのテーブルの共通部分も表示されます.
4.全連結
2つのテーブルのすべてのレコードを表示します.つまり、2つのテーブルのセットを取得します.ただし、MySQLではフル結合操作はサポートされていません.左外部結合と右外部結合を人為的に結合する必要があります.
5.クロスジョイント
デカルト積結合とも呼ばれ、左のテーブルに右のテーブルを乗じたすべてのエントリを返します.
6.自己連結
同じテーブルを結合します.
転載先:https://www.cnblogs.com/00986014w/p/8465083.html
1.内部連結
2つのテーブルの共通のデータを表示します.つまり、2つのテーブルの交差を表示します.
SELECT <list> FROM A INNER JOIN B ON A.key = B.key;
2.左外連結
2つのテーブルのうち、左のテーブルにのみ存在し、右のテーブルには存在しないデータをフィルタします.
SELECT <list> FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL;
後ろのwhere句を付けないと、2つのテーブルの共通部分も表示されます.
3.右外部連結
2つのテーブルのうち、右のテーブルにのみ存在し、左のテーブルには存在しないデータをフィルタします.
SELECT <list> FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL;
後ろのwhere句を付けないと、2つのテーブルの共通部分も表示されます.
4.全連結
2つのテーブルのすべてのレコードを表示します.つまり、2つのテーブルのセットを取得します.ただし、MySQLではフル結合操作はサポートされていません.左外部結合と右外部結合を人為的に結合する必要があります.
SELECT <list> FROM A LEFT JOIN B ON A.key = B.key
UNION ALL
SELECT <list> FROM A RIGHT JOIN B ON A.key = B.key; union all , union
5.クロスジョイント
デカルト積結合とも呼ばれ、左のテーブルに右のテーブルを乗じたすべてのエントリを返します.
SELECT <list> FROM A CROSS JOIN B;
6.自己連結
同じテーブルを結合します.
SELECT p1.id, p1.name FROM products AS p1, products AS p2 WHERE p1.vend_id = p2.vend_id AND p2.id = 10;
転載先:https://www.cnblogs.com/00986014w/p/8465083.html