union: 重複行を除く複数の結果セットに対してユニオン演算を実行し、それらを同時に並べ替えます。
union all: ソートせずに、重複行を含む複数の結果セットに対して結合操作を実行します。
部門が 30 人未満の従業員の情報と、部門が 20 人を超え 40 人未満の従業員の情報をクエリします。
①. まず、部門番号が 30 未満の従業員の情報を照会します。
SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id < 30; ```
20 人以上 40 人未満の部門の従業員情報をクエリします。
SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id BETWEEN 20 and 40;```
③. ユニオンを使用して 2 つのテーブルを接続します
SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id < 30 UNION SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id BETWEEN 20 and 40; ```
結果はデフォルトで並べ替えられ、重複が排除されます。両方のテーブルには部門情報 No. 30 があります。結果 1 回だけ表示されます。
④. 次に、union all を使用して 2 つのテーブルを接続します
SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id < 30 UNION ALL SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id BETWEEN 20 and 40; ```
結果は重複排除または並べ替えられません。並べ替えられた結果は結果と比較されますまず、20 歳以上 40 歳未満の従業員の情報を照会し、30 歳未満の従業員の情報を確認します。
#⑤. クエリ結果の比較
SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id BETWEEN 20 and 40 UNION ALL SELECT employees_id ,last_name ,salary ,department_id FROM employees WHERE department_id < 30;```
以上がMySQLのunionとunionallの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。