MySQL UNIONとUNIONALLの文法と使い方

2104 ワード

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を使用してクエリ効率を向上させる必要があります.