.
- union キーワードを使用すると、複数の選択ステートメントを指定し、その結果を 1 つの結果セットに結合できます。マージする場合、2 つのテーブルに対応する列の数とデータ型は同じである必要があります。各選択ステートメントを区切るには、union または Union all キーワードを使用します。
- Union は、キーワード all を使用しません。重複レコードは実行中に削除され、返される行はすべて一意です。キーワード all を使用する機能は、重複行を削除せず、結果を自動的に並べ替えることもありません。
基本的な構文形式は次のとおりです:
1 | select column,...from table1union [all]select column,... from table2
|
ログイン後にコピー
(無料学習の推奨事項: mysql ビデオ チュートリアル)
#[例 1] 価格が 9 未満のすべての果物の情報をクエリし、s_id が 101 と 103 に等しいすべての果物の情報をクエリし、クエリ結果を結合するために Union を使用する SQL ステートメント
1 2 3 | mysql> select s_id,f_name,f_price -> from fruits -> where f_price <9.0
-> union all
-> select s_id,f_name,f_price -> from fruits -> where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+15 rows in set (0.06 sec)
|
ログイン後にコピー
Union は、複数の select ステートメントの結果を結果セットに結合します。各 select ステートメントの結果を個別に表示できます。
1 | mysql> select s_id,f_name,f_price -> from fruits -> where f_price < 9.0;+------+---------+---------+| s_id | f_name | f_price |+------+---------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 |+------+---------+---------+10 rows in set (0.00 sec)mysql> select s_id,f_name,f_price -> from fruits -> where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+5 rows in set (0.00 sec)
|
ログイン後にコピー
個別のクエリ結果からわかるように、最初の select ステートメントは価格が 9 未満の果物をクエリし、2 番目の select ステートメントは提供された果物をクエリします。サプライヤー 101 および 103 による。フルーツ。
union を使用して 2 つの select ステートメントを区切ります。実行後、出力結果を 1 つの結果セットに結合し、重複するレコードを削除します。 - 重複行を含めるには、すべて結合を使用します。 Union は、クエリ結果セットから重複行を自動的に削除します。削除せずに一致するすべての行を返したい場合は、Union all を使用できます。
-
[例 2] 価格が 9 未満のすべての果物の情報をクエリし、s_id が 101 および 103 に等しいすべての果物の情報をクエリし、クエリ結果を結合するために Union All を使用します。 SQL ステートメントは次のとおりです:
1 2 3 | mysql> select s_id,f_name,f_price -> from fruits -> where f_price<9.0
-> union all
-> select s_id,f_name,f_price -> from fruits -> where s_id in(101,103);+------+------------+---------+| s_id | f_name | f_price |+------+------------+---------+| 104 | lemon | 6.40 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 104 | berry | 7.60 || 107 | xxxx | 3.60 || 105 | melon | 8.20 || 101 | cherry | 3.20 || 105 | xbabay | 2.60 || 102 | grape | 5.30 || 107 | xbabay | 3.60 || 101 | apple | 5.20 || 103 | apricot | 2.20 || 101 | blackberry | 10.20 || 101 | cherry | 3.20 || 103 | coconut | 9.20 |+------+------------+---------+15 rows in set (0.00 sec)
|
ログイン後にコピー
ご覧のとおり、ここでのレコードの合計数は、2 つの select ステートメントによって返されるレコード数の合計と等しくなります。接続クエリの結果は重複行を削除しません。 。
ユニオンとユニオンオールの違い:
ユニオンオール- を使用する機能は、重複した行を削除することではありません。すべてのキーワード文が実行されます。必要なリソースが少ないため、できるだけ使用します。
クエリ結果に重複データが存在しないことが確実である場合、または重複データを削除する必要がない場合は、uninon all を使用してクエリの効率を向上させてみてください。
-
#その他の関連する無料学習の推奨事項:
mysql チュートリアル(ビデオ)
以上がMySQL クエリ データ マージ クエリ結果の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。