UNION キーワードを使用して、複数の SELECT ステートメントを 1 つの結果セットに結合できます。マージする場合、2 つのテーブルに対応する列の数とデータ型は同じである必要があります。 UNION または UNION ALL キーワードを使用して SELECT ステートメントを区切ります。 UNION ではキーワード ALL が使用されず、重複レコードは実行中に削除され、返される行はすべて一意です。キーワード ALL を使用する機能は、重複行を削除したり、結果を自動的に並べ替えたりすることではありません。基本的な構文形式は次のとおりです。
SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM table2
価格が 9 未満のすべての果物の情報をクエリし、s_id が 101 および 103 に等しいすべての果物の情報をクエリし、UNION を使用してクエリ結果を接続します。 SQL ステートメントは次のとおりです:
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
結合されたクエリ結果は次のとおりです:
UNION は複数の SELECT ステートメントの結果を 1 つの結果セットに結合します。 、前述したように..各 SELECT ステートメントの結果を個別に表示できます。
SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0;
SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
個別のクエリの結果から、最初の SELECT がステートメント 価格が 9 未満の果物をクエリするには、2 番目の SELECT ステートメントでサプライヤー 101 と 103 が提供する果物をクエリします。 UNION を使用して 2 つの SELECT ステートメントを区切ります。実行後、出力結果を 1 つの結果セットに結合し、重複するレコードを削除します。
前の例では、重複行を含めるために UNION ALL を使用しているため、個別にクエリを実行すると同じレコードが生成されました。 UNION は、クエリ結果セットから重複行を自動的に削除します。削除せずに一致するすべての行を返したい場合は、UNION ALL を使用できます。
価格が 9 未満のすべての果物の情報をクエリし、s_id が 101 および 103 に等しいすべての果物の情報をクエリし、UNION ALL を使用してクエリ結果を結合します。SQL ステートメントは次のとおりです。
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);
クエリ結果は次のとおりです:
結果からわかるように、ここでのレコードの総数はレコード数の合計と等しくなります。 2 つの SELECT ステートメントによって返されるレコードの数。接続クエリの結果では重複行は削除されません。
ヒント: UNION と UNION ALL の違い: UNION ALL を使用する機能は、重複行を削除しないことです。また、ALL キーワード ステートメントは実行時に必要なリソースが少ないため、可能な限り使用してください。したがって、重複行があることがわかっているが、これらの行を保持したい場合、およびクエリ結果に重複データがないこと、または重複データを削除する必要がないことを確認する場合は、UNION ALL を使用してクエリを改善する必要があります。効率。
以上がMySQL でクエリ結果をマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。