您的位置:首页 > 编程语言 > PHP开发

跟燕十八学习PHP-第二十八天-union用法深入讲解

2012-11-01 20:45 706 查看
/**

燕十八 公益PHP培训

课堂地址:YY频道88354001

学习社区:www.zixue.it

**/

mysql> create table a (

-> id char(1),

-> num int

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.17 sec)

mysql>

mysql> insert into a values ('a',5),('b',10),('c',15),('d',10);

Query OK, 4 rows affected (0.00 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql>

mysql> create table b (

-> id char(1),

-> num int

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.17 sec)

mysql>

mysql> insert into a values ('b',5),('c,15),('d',20),('e',99);

'> \c

'> '\c

mysql> insert into b values ('b',5),('c',15),('d',20),('e',99);

Query OK, 4 rows affected (0.00 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> select * from a;

+------+------+

| id | num |

+------+------+

| a | 5 |

| b | 10 |

| c | 15 |

| d | 10 |

+------+------+

4 rows in set (0.00 sec)

mysql> select * from b;

+------+------+

| id | num |

+------+------+

| b | 5 |

| c | 15 |

| d | 20 |

| e | 99 |

+------+------+

4 rows in set (0.00 sec)

mysql> #可用用左连接来做

mysql> select a.*,b.* from

-> a left join b on a.id=b.id;

+------+------+------+------+

| id | num | id | num |

+------+------+------+------+

| a | 5 | NULL | NULL |

| b | 10 | b | 5 |

| c | 15 | c | 15 |

| d | 10 | d | 20 |

+------+------+------+------+

4 rows in set (0.00 sec)

mysql> #再把上面的结果看成一张临时表,再次from型子查询,计算a.num+b.num的和

mysql> #这个思路,课下同学们自己来试.如遇到坑,查 ifnull函数

mysql> #而且少了e, 只好左连 union 右连,再子查询

mysql>

mysql> #换个思路,先把2张表的数据union到一块,再利用sum()函数来相加

mysql> select * from a;

+------+------+

| id | num |

+------+------+

| a | 5 |

| b | 10 |

| c | 15 |

| d | 10 |

+------+------+

4 rows in set (0.00 sec)

mysql> select * from b;

+------+------+

| id | num |

+------+------+

| b | 5 |

| c | 15 |

| d | 20 |

| e | 99 |

+------+------+

4 rows in set (0.00 sec)

mysql> select * from a

-> union

-> select * from b;

+------+------+

| id | num |

+------+------+

| a | 5 |

| b | 10 |

| c | 15 |

| d | 10 |

| b | 5 |

| d | 20 |

| e | 99 |

+------+------+

7 rows in set (0.00 sec)

mysql> #再sum一下,

mysql> select id,sum(num) from (

->

-> select * from a

-> union

-> select * from b

-> ) as tmp

->

-> group by id;

+------+----------+

| id | sum(num) |

+------+----------+

| a | 5 |

| b | 15 |

| c | 15 |

| d | 30 |

| e | 99 |

+------+----------+

5 rows in set (0.03 sec)

mysql> #c错了,不要去重复

mysql> select id,sum(num) from (

->

-> select * from a

-> union all

-> select * from b

-> ) as tmp

->

-> group by id;

+------+----------+

| id | sum(num) |

+------+----------+

| a | 5 |

| b | 15 |

| c | 30 |

| d | 30 |

| e | 99 |

+------+----------+

5 rows in set (0.00 sec)

mysql> exit

燕十八老师太幽默了, 昨天的视频如下:
http://www.tudou.com/programs/view/ahOl2jS2cYY/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: