表复制和去重
复制
创建t01表
CREATE TABLE t01(
id INT,
`name` VARCHAR(32),
sal DOUBLE,
job VARCHAR(32),
deptno INT
);
DESC t01
将emp表的记录复制到t01
INSERT INTO t01
(id,`name`,sal,job,deptno)
SELECT empno,ename,sal,job,deptno FROM emp
SELECT * FROM t01
自我复制emp
INSERT INTO emp
SELECT * FROM emp
去重
将emp表中重复的记录删除
思路:
1. 先创建一个临时表temp,使其表的结构与emp一样
CREATE TABLE temp LIKE emp
DESC temp
2. 先把temp的记录通过distinct关键字处理后,把记录复制到temp
INSERT INTO temp
SELECT DISTINCT * FROM emp
SELECT * FROM temp
3. 清除掉emp的记录
DELETE FROM emp
SELECT * FROM emp
3.把temp表的记录复制到 emp
INSERT INTO emp
SELECT * FROM temp
SELECT * FROM emp
4. 删除temp
DROP TABLE temp
合并查询
介绍
在实际应用中,有时为了合并多个select语句的结果,可以使用集合才做符号
union all
该操作符用于取得两个结果集的并集。当使用该操作符时,不会取消重复行
SELECT ename,sal,job FROM emp WHERE sal > 2500 -- 5
SELECT ename,sal,job FROM emp WHERE job = 'MANAGER' -- 3
SELECT ename,sal,job FROM emp WHERE sal > 2500 -- 5
UNION ALL
SELECT ename,sal,job FROM emp WHERE job = 'MANAGER' -- 3
union
介绍
该操作符与union all 相似,但是会自动去掉结果之中重复行
SELECT ename,sal,job FROM emp WHERE sal > 2500 -- 5
UNION
SELECT ename,sal,job FROM emp WHERE job = 'MANAGER' -- 3