MySQL-联合UNION
时间:2020-02-23 14:41:04 来源:igfitidea点击:
在本教程中,我们将学习MySQL中的union和union。
当我们要合并多个SELECT查询的结果时,我们使用UNION运算符。
以下是在查询中使用UNION时要注意的几点。
使用UNION时,每个SELECT查询的列数必须相同。
SELECT查询中的列也必须具有相同的顺序。
SELECT查询中的列的数据类型也必须匹配。
UNION的语法
mysql> SELECT column_name FROM table_a UNION SELECT column_name FROM table_b;
其中,在两个SELECT语句中," column_name"必须具有相同的类型和相同的顺序。
在本教程中,我们将使用" office"和" employeeaddress"表。
桌子:办公室
mysql> SELECT * FROM office; +----------+--------------+---------------------+--------------+-----------+-------+---------+---------+ | officeid | officename | addressline1 | addressline2 | city | state | country | pincode | +----------+--------------+---------------------+--------------+-----------+-------+---------+---------+ | o01 | Web Projects | #123 Awesome Street | Super Main | Bangalore | KA | INDIA | 560000 | | o02 | Apps | #321 Super Street | Action Road | Kolkata | WB | INDIA | 700000 | | o03 | Game | #12 Super Street | Master Block | Chennai | TN | INDIA | 600000 | +----------+--------------+---------------------+--------------+-----------+-------+---------+---------+ 3 rows in set (0.00 sec)
表:员工地址
mysql> SELECT * FROM employeeaddress; +----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+ | id | employeeid | addresstype | addressline1 | addressline2 | city | state | country | pincode | +----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+ | 1 | e01 | PRIMARY | #12 street | Action block | Bangalore | KA | INDIA | 560000 | | 2 | e03 | PRIMARY | Super Housing Complex Block 22 | Major Street | Chennai | TN | INDIA | 600000 | | 3 | e03 | SECONDARY | House #301 ABC Colony | Jupiter Block | Kolkata | WB | INDIA | 700000 | | 4 | e02 | PRIMARY | Pizza Street | Foodies Block | Kolkata | WB | INDIA | 700000 | | 5 | e04 | PRIMARY | Fruits Apartment | Fresh Block | Bangalore | KA | INDIA | 560000 | | 6 | e05 | PRIMARY | Apartment 10 | Fast Food Block | Chennai | TN | INDIA | 600000 | +----+------------+-------------+--------------------------------+-----------------+-----------+-------+---------+---------+ 6 rows in set (0.00 sec)
UNION示例
在查询中使用UNION时,我们将从表中获得不同的值。
在以下示例中,我们列出了" employeeadress"和" office"表中不同的所有城市,州和国家/地区名称。
mysql>SELECT city, state, country FROM employeeaddress UNION SELECT city, state, country FROM office;
+-----------+-------+---------+ | city | state | country | +-----------+-------+---------+ | Bangalore | KA | INDIA | | Chennai | TN | INDIA | | Kolkata | WB | INDIA | +-----------+-------+---------+ 3 rows in set (0.00 sec)
在employeeaddress表中,我们可以看到重复的城市名称,例如班加罗尔,钦奈和加尔各答,州名称例如KA,TN和WB。
但是在查询中使用UNION只会返回一次城市和州名称,因为它只选择了唯一的值(即不同的值)。
全联合 UNION ALL
当我们要获取所有值而不是唯一值时,可以使用UNION ALL。
UNION ALL的语法
mysql> SELECT column_name FROM table_a UNION ALL SELECT column_name FROM table_b;
其中,在两个SELECT语句中," column_name"必须具有相同的类型和相同的顺序。
在下面的示例中,我们使用UNION ALL检索所有值。
mysql>SELECT city, state, country FROM employeeaddress UNION ALL SELECT city, state, country FROM office;
+-----------+-------+---------+ | city | state | country | +-----------+-------+---------+ | Bangalore | KA | INDIA | | Chennai | TN | INDIA | | Kolkata | WB | INDIA | | Kolkata | WB | INDIA | | Bangalore | KA | INDIA | | Chennai | TN | INDIA | | Bangalore | KA | INDIA | | Kolkata | WB | INDIA | | Chennai | TN | INDIA | +-----------+-------+---------+ 9 rows in set (0.00 sec)