MySQLユニオンとユニオンALLの違い

1764 ワード

MySQL UNION構文
MySQL UNIONは、複数のSELECT文からの結果を1つの結果セットに組み合わせるために使用されます.構文:
SELECT column,... FROM table1 
UNION [ALL]
SELECT column,... FROM table2
...

複数のSELECT文では、対応する列は同じフィールド属性を持つべきであり、最初のSELECT文で使用されるフィールド名も結果のフィールド名に使用されます.
ユニオンとユニオンALLの違い
UNIONを使用すると、MySQLは結果セットで重複したレコードを削除し、UNIOALLを使用すると、MySQLはすべてのレコードを返し、UNIONよりも効率的になります.
MySQL UNION使用例
UNIONは、異なるデータ分類テーブルやデータ履歴テーブルなど、データ類似の2つ以上のテーブルクエリーによく使用されます.次に、例に使用する2つの元のデータテーブルを示します.
article文書表:
aid
title
content
1
記事1
文章1本文の内容...
2
記事2
文章2本文の内容...
3
記事3
文章3本文の内容...
blogログテーブル:
bid
title
content
1
ログ1
ログ1本文の内容...
2
記事2
文章2本文の内容...
3
ログ3
ログ3本文の内容...
上記の2つのテーブルデータのうち、aid=2のデータレコードはbid=2のデータレコードと同じである.
UNIONクエリーの使用
2つのテーブルの記事id番号とタイトルをクエリーし、重複レコードを削除します.
SELECT aid,title FROM article UNION SELECT bid,title FROM blog

クエリの結果は次のように返されます.
aid
title
1
記事1
2
記事2
3
記事3
1
ログ1
3
ログ3
UNION照会結果説明
  • 重複レコードとは、クエリ内の各フィールドが完全に重複するレコードを指し、上記の例のようにtitleが同じでid番号が異なる場合は異なるレコードとして計算される.
  • の最初のSELECT文で使用されるフィールド名は、前述のaidのような結果のフィールド名にも使用される.
  • 各SELECT文フィールド名は異なることができますが、フィールド属性は一致する必要があります.

  • UNIOALLクエリーの使用
    2つのテーブルの記事id番号とタイトルをクエリーし、すべてのレコードを返します.
    SELECT aid,title FROM article UNION ALL SELECT bid,title FROM blog
    

    クエリの結果は次のように返されます.
    aid
    title
    1
    記事1
    2
    記事2
    3
    記事3
    1
    ログ1
    2
    記事2
    3
    ログ3
    ユニオンALLを使用する場合、データが重複しているかどうかを判断するのではなく、単純に各クエリーを組み合わせているだけであることは明らかです.したがって、クエリ結果に重複データがない、または重複データを削除する必要がないと判断した場合は、UNIOALLを使用してクエリ効率を向上させる必要があります.