數據庫MySQL-union(聯合)

  • 2020 年 3 月 27 日
  • 筆記

1.8 union(聯合)

插入測試數據

create table emp(         id tinyint unsigned auto_increment primary key,         name varchar(20) not null,         skill set('PHP','mysql','java')   );    insert into emp values (null,'李白',1),(null,'杜甫',2),(null,'白居易',4)  insert into emp values (null,'爭青小子',3)

1.8.1 union的使用

作用:將多個select語句結果集縱向聯合起來

語法:select 語句 union [選項] select 語句 union [選項] select 語句
-- 查詢stu表中的姓名和emp表中姓名 結果自動合併的重複的記錄  mysql> select stuname from stu union select name from emp;

例題:查詢上海的男生和北京的女生

-- 方法一:  mysql> select * from stu where (stuaddress='上海' and stusex='男') or (stuaddress='北京' and stusex='女');  +--------+---------+--------+--------+---------+------------+------+------+  | stuNo  | stuName | stuSex | stuAge | stuSeat | stuAddress | ch   | math |  +--------+---------+--------+--------+---------+------------+------+------+  | s25302 | 李文才       | 男       |     31 |       3 | 上海          |   77 |   76 |  | s25303 | 李斯文       | 女      |     22 |       2 | 北京           |   55 |   82 |  +--------+---------+--------+--------+---------+------------+------+------+  2 rows in set (0.00 sec)    -- 方法二:union  mysql> select * from stu where stuaddress='上海' and stusex='男' union select * from stu where stuaddress='北京' and stusex='女';  +--------+---------+--------+--------+---------+------------+------+------+  | stuNo  | stuName | stuSex | stuAge | stuSeat | stuAddress | ch   | math |  +--------+---------+--------+--------+---------+------------+------+------+  | s25302 | 李文才       | 男       |     31 |       3 | 上海          |   77 |   76 |  | s25303 | 李斯文       | 女      |     22 |       2 | 北京           |   55 |   82 |  +--------+---------+--------+--------+---------+------------+------+------+  2 rows in set (0.00 sec)    結論:union可以將一個複雜的條件轉成兩個簡單的條件

1.8.2 union的選項

union的選項有兩個

1、 all:顯示所有數據

2、 distinct:去除重複的數據【默認】

mysql> select stuname from stu union all select name from emp;

1.8.3 union的注意事項

1、 union兩邊的select語句的字段個數必須一致

2、 union兩邊的select語句的字段名可以不一致,最終按第一個select語句的字段名。

3、 union兩邊的select語句中的數據類型可以不一致。