/**

燕十八 公益PHP培训

课堂地址:YY频道88354001

学习社区:www.zixue.it

**/

header('content-type:text/html; charset=utf-8');

/*

要做:商城的留言板

一般情况,做留言板的显示很容易

直接select 查询,再显示出来

但ecshop中的留言板难点在于

留言数据来自于2张表

feedback 留言表

comment 评论表

我们需要把2张表中的数据取出来,显示.

思路:从业务逻辑层,用php来解决这个问题

1:先取feedback表,循环取出数据,放入一个数组

2:再取comment表, 循环取出数据,放入一个数组

3:把取出两个数组合并

4:循环合并后的大数组

*/

$conn = mysql_connect('localhost','root','111111');

$sql = 'use gyshop'; // 你的ecshop库名叫什么,你就选什么

mysql_query($sql,$conn);

$sql = 'set names utf8';

mysql_query($sql,$conn);

// 开始取feedback表的数据

$sql = 'select user_name,msg_content,msg_time from feedback where msg_status=1';

$rs = mysql_query($sql,$conn);

$feeds = array();

while($row = mysql_fetch_assoc($rs)) {

$feeds[] = $row;

}

//print_r($feeds);

// 开始取comment表的数据

$sql = 'select user_name,content as msg_content,add_time as msg_time from comment where status=1';

$rs = mysql_query($sql,$conn);

$comm = array();

while($row = mysql_fetch_assoc($rs)) {

$comm[] = $row;

}

//print_r($feeds);

//print_r($comm);

$all = array_merge($feeds,$comm);

//print_r($all);exit;

/*

技术经理看到了:

小王啊,你这个语句可以再精简.

没必要2条sql语句,取2张表,再array_merge.

完全可以1条语句来完成.

问:1条语句怎么写?

经理:我只是给你思路,百度'union'

*/

?>

新建网页

我也会ecshop的留言板

<?php echo $v['user_name']; ?> <?php echo $v['msg_time']; ?>
<?php echo $v['msg_content']; ?>

/**

燕十八 公益PHP培训

课堂地址:YY频道88354001

学习社区:www.zixue.it

**/

header('content-type:text/html; charset=utf-8');

/*

要做:商城的留言板

用union全并结合集,一条sql语句来搞定

*/

$conn = mysql_connect('localhost','root','111111');

$sql = 'use gyshop'; // 你的ecshop库名叫什么,你就选什么

mysql_query($sql,$conn);

$sql = 'set names utf8';

mysql_query($sql,$conn);

// 开始取feedback表的数据

$sql1 = 'select user_name,msg_content,msg_time from feedback where msg_status=1';

$sql2 = 'select user_name,content as msg_content,add_time as msg_time from comment where status=1';

$sql = $sql1 . ' union ' . $sql2;

$rs = mysql_query($sql,$conn);

$all = array();

while($row = mysql_fetch_assoc($rs)) {

$all[] = $row;

}

?>

新建网页

我也会ecshop的留言板

<?php echo $v['user_name']; ?> <?php echo $v['msg_time']; ?>
<?php echo $v['msg_content']; ?>

/**

燕十八 公益PHP培训

课堂地址:YY频道88354001

学习社区:www.zixue.it

**/

mysql> use test

Database changed

mysql> set names gbk;

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;

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

| Tables_in_test |

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

| account |

| boy |

| category |

| class |

| girl |

| goods |

| m1 |

| member |

| mian |

| minigoods |

| result |

| salary |

| stu |

| test |

| test10 |

| test11 |

| test2 |

| test3 |

| test4 |

| test5 |

| test6 |

| test7 |

| test8 |

| test9 |

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

24 rows in set (1.16 sec)

mysql> create table m(

-> mid int,

-> hid int,

-> gid int,

-> mres varchar(10),

-> matime date

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.19 sec)

mysql>

mysql>

mysql> create table t (

-> tid int,

-> tname varchar(20)

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.09 sec)

mysql>

mysql>

mysql>

mysql> insert into m

-> values

-> (1,1,2,'2:0','2006-05-21'),

-> (2,2,3,'1:2','2006-06-21'),

-> (3,3,1,'2:5','2006-06-25'),

-> (4,2,1,'3:2','2006-07-21');

Query OK, 4 rows affected (0.03 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql>

mysql>

mysql> insert into t

-> values

-> (1,'国安'),

-> (2,'申花'),

-> (3,'公益联动');

Query OK, 3 rows affected (0.06 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from m;

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

| mid | hid | gid | mres | matime |

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

| 1 | 1 | 2 | 2:0 | 2006-05-21 |

| 2 | 2 | 3 | 1:2 | 2006-06-21 |

| 3 | 3 | 1 | 2:5 | 2006-06-25 |

| 4 | 2 | 1 | 3:2 | 2006-07-21 |

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

4 rows in set (0.00 sec)

mysql> select * from t;

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

| tid | tname |

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

| 1 | 国安 |

| 2 | 申花 |

| 3 | 公益联动 |

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

3 rows in set (0.02 sec)

mysql> update t set tname='公益联队' where tid=3;

Query OK, 1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> #要求取出比赛的结果,并且队伍id应显示出队名

mysql> #简单一点,取出主客队的id,并不做特殊处理

mysql> select hid,mres,gid,matime from m;

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

| hid | mres | gid | matime |

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

| 1 | 2:0 | 2 | 2006-05-21 |

| 2 | 1:2 | 3 | 2006-06-21 |

| 3 | 2:5 | 1 | 2006-06-25 |

| 2 | 3:2 | 1 | 2006-07-21 |

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

4 rows in set (0.00 sec)

mysql> #再前进一小步,根据hid,左联t表,查出主队的队伍名称

mysql> #即简单的2张表左连接

mysql> select hid,tname,mres,gid,matime

-> from

-> m left join t on m.hid=t.tid;

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

| hid | tname | mres | gid | matime |

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

| 1 | 国安 | 2:0 | 2 | 2006-05-21 |

| 2 | 申花 | 1:2 | 3 | 2006-06-21 |

| 3 | 公益联队 | 2:5 | 1 | 2006-06-25 |

| 2 | 申花 | 3:2 | 1 | 2006-07-21 |

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

4 rows in set (0.08 sec)

mysql> +------+----------+------+------+------------+

-> | hid | tname | mres | gid | matime |

-> +------+----------+------+------+------------+

-> | 1 | 国安 | 2:0 | 2 | 2006-05-21 |

-> | 2 | 申花 | 1:2 | 3 | 2006-06-21 |

-> | 3 | 公益联队 | 2:5 | 1 | 2006-06-25 |

-> | 2 | 申花 | 3:2 | 1 | 2006-07-21 |

-> +------+----------+------+------+------------+\c

mysql> select hid,tname,mres,gid,tname,matime

-> from

-> (m left join t on m.hid=t.tid)

-> left join t on m.gid=t.tid;

ERROR 1066 (42000): Not unique table/alias: 't'

mysql> #错误的原因 是 m t t 相连,两张t表,名字冲突,起个别名就可以解决

mysql> # select 列名 as 别名,也可以 from 表名 as 表别名

mysql> select hid,t1.tname,mres,gid,matime

-> from

-> m left join t as t1 on m.hid=t1.tid;

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

| hid | tname | mres | gid | matime |

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

| 1 | 国安 | 2:0 | 2 | 2006-05-21 |

| 2 | 申花 | 1:2 | 3 | 2006-06-21 |

| 3 | 公益联队 | 2:5 | 1 | 2006-06-25 |

| 2 | 申花 | 3:2 | 1 | 2006-07-21 |

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

4 rows in set (0.00 sec)

mysql> select hid,t1.tname,mres,gid,t2.tname,matime

-> from

-> m left join t as t1 on m.hid=t1.tid;

ERROR 1054 (42S22): Unknown column 't2.tname' in 'field list'

mysql>

mysql> left join t2 on m.gid=t2.tid\c

mysql> select hid,t1.tname,mres,gid,t2.tname,matime

-> from

-> m left join t as t1 on m.hid=t1.tid

-> left join t as t2 on m.gid=t2.tid;

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

| hid | tname | mres | gid | tname | matime |

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

| 1 | 国安 | 2:0 | 2 | 申花 | 2006-05-21 |

| 2 | 申花 | 1:2 | 3 | 公益联队 | 2006-06-21 |

| 3 | 公益联队 | 2:5 | 1 | 国安 | 2006-06-25 |

| 2 | 申花 | 3:2 | 1 | 国安 | 2006-07-21 |

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

4 rows in set (0.00 sec)

mysql> #得到最终列

mysql> select hid,t1.tname,mres,gid,t2.tname,matime

-> \c

mysql> select t1.tname,mres,t2.tname,matime

-> from

-> m left join t as t1 on m.hid=t1.tid

-> left join t as t2 on m.gid=t2.tid;

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

| tname | mres | tname | matime |

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

| 国安 | 2:0 | 申花 | 2006-05-21 |

| 申花 | 1:2 | 公益联队 | 2006-06-21 |

| 公益联队 | 2:5 | 国安 | 2006-06-25 |

| 申花 | 3:2 | 国安 | 2006-07-21 |

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

4 rows in set (0.00 sec)

mysql> #左连接之后,where,group..5句照常使用

mysql> select hid,t1.tname,mres,gid,t2.tname,matime

-> from

-> m left join t as t1 on m.hid=t1.tid

-> left join t as t2 on m.gid=t2.tid

-> where matime between '2006-06-01' and '2006-07-01';

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

| hid | tname | mres | gid | tname | matime |

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

| 2 | 申花 | 1:2 | 3 | 公益联队 | 2006-06-21 |

| 3 | 公益联队 | 2:5 | 1 | 国安 | 2006-06-25 |

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

2 rows in set (0.05 sec)

mysql> select hid,t1.tname,mres,gid,t2.tname,matime

-> from

-> m left join t as t1 on m.hid=t1.tid

-> left join t as t2 on m.gid=t2.tid

-> where matime > '2006-06-01' and matime < '2006-07-01';

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

| hid | tname | mres | gid | tname | matime |

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

| 2 | 申花 | 1:2 | 3 | 公益联队 | 2006-06-21 |

| 3 | 公益联队 | 2:5 | 1 | 国安 | 2006-06-25 |

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

2 rows in set (0.00 sec)

mysql> #切换到ecsho库,练习union

mysql> #取comment表

mysql> select user_name,content,add_time from comment where status=1;

ERROR 1146 (42S02): Table 'test.comment' doesn't exist

mysql> use gyshop

Database changed

mysql> select user_name,content,add_time from comment where status=1;

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

| user_name | content | add_time |

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

| ecshop | 很好,我很喜欢 | 1242107120 |

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

1 row in set (0.00 sec)

mysql> select user_name,content as aa,add_time as bb from comment where status=1;

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

| user_name | aa | bb |

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

| ecshop | 很好,我很喜欢 | 1242107120 |

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

1 row in set (0.00 sec)

mysql> #回到test库继续练习

mysql> use test

Database changed

mysql> #要求查出价格低于100元 和 价格高于4000元的商品

mysql> #要求不能用or

mysql> #我先查<100的商品

mysql> select goods_id,goods_name,shop_price from goods where shop_price < 100;

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

| goods_id | goods_name | shop_price |

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

| 4 | 诺基亚N85原装充电器 | 58.00 |

| 3 | 诺基亚原装5800耳机 | 68.00 |

| 5 | 索爱原装M2卡读卡器 | 20.00 |

| 6 | 胜创KINGMAX内存卡 | 42.00 |

| 25 | 小灵通/固话50元充值卡 | 48.00 |

| 26 | 小灵通/固话20元充值卡 | 19.00 |

| 27 | 联通100元充值卡 | 95.00 |

| 28 | 联通50元充值卡 | 45.00 |

| 29 | 移动100元充值卡 | 90.00 |

| 30 | 移动20元充值卡 | 18.00 |

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

10 rows in set (0.06 sec)

mysql> select goods_id,goods_name,shop_price from goods where shop_price < 30;

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

| goods_id | goods_name | shop_price |

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

| 5 | 索爱原装M2卡读卡器 | 20.00 |

| 26 | 小灵通/固话20元充值卡 | 19.00 |

| 30 | 移动20元充值卡 | 18.00 |

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

3 rows in set (0.00 sec)

mysql> #取出>4000的商品

mysql> select goods_id,goods_name,shop_price from goods where shop_price > 4000;

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

| goods_id | goods_name | shop_price |

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

| 22 | 多普达Touch HD | 5999.00 |

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

1 row in set (0.00 sec)

mysql> #2个语句的结果拼接起来就可以了. union 合并,连接

mysql> select goods_id,goods_name,shop_price from goods where shop_price < 30

-> union

-> select goods_id,goods_name,shop_price from goods where shop_price > 4000;

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

| goods_id | goods_name | shop_price |

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

| 5 | 索爱原装M2卡读卡器 | 20.00 |

| 26 | 小灵通/固话20元充值卡 | 19.00 |

| 30 | 移动20元充值卡 | 18.00 |

| 22 | 多普达Touch HD | 5999.00 |

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

4 rows in set (0.00 sec)

mysql> #利于目前的知识,简化商城的留言版

mysql> #先取feedback表

mysql> select user_name,msg_content,msg_time from feedback where msg_status=1;

ERROR 1146 (42S02): Table 'test.feedback' doesn't exist

mysql> #再次切换到ecshop的库,去练习

mysql> select user_name,msg_content,msg_time from feedback where msg_status=1;

ERROR 1146 (42S02): Table 'test.feedback' doesn't exist

mysql> use gyshop;

Database changed

mysql> select user_name,msg_content,msg_time from feedback where msg_status=1;

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

| user_name | msg_content | msg_time |

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

| 匿名用户 | 骗子!寄来的是砖头. | 1351573375 |

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

1 row in set (0.00 sec)

mysql> #接下来,再取comment表

mysql> select user_name,content as msg_content,add_time as msg_time

-> from comment where status=1;

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

| user_name | msg_content | msg_time |

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

| ecshop | 很好,我很喜欢 | 1242107120 |

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

1 row in set (0.01 sec)

mysql> #再合并结果就可以了

mysql> select user_name,msg_content,msg_time from feedback where msg_status=1

-> union

-> select user_name,content as msg_content,add_time as msg_time

-> from comment where status=1;

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

| user_name | msg_content | msg_time |

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

| 匿名用户 | 骗子!寄来的是砖头. | 1351573375 |

| ecshop | 很好,我很喜欢 | 1242107120 |

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

2 rows in set (0.09 sec)

mysql> #两次的列名称不一样,还能否union

mysql> select user_name,msg_content,msg_time from feedback where msg_status=1

-> union

-> select user_name,content,add_time from comment where status=1;

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

| user_name | msg_content | msg_time |

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

| 匿名用户 | 骗子!寄来的是砖头. | 1351573375 |

| ecshop | 很好,我很喜欢 | 1242107120 |

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

2 rows in set (0.08 sec)

mysql> #看看列的类型不一致

mysql> select user_name,msg_time from feedback

-> union

-> select add_time,user_name from comment;

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

| user_name | msg_time |

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

| ecshop | 1242107197 |

| 匿名用户 | 1351573375 |

| 1242107120 | ecshop |

| 1242107295 | ecshop |

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

4 rows in set (0.00 sec)

mysql> #union后的结果集,能否再排序

mysql> #答:能

mysql> select goods_id,goods_name,shop_price from goods where shop_price < 30

-> union

-> select goods_id,goods_name,shop_price from goods where shop_price > 4000

->

-> order by shop_price asc;

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

| goods_id | goods_name | shop_price |

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

| 30 | 移动20元充值卡 | 18.00 |

| 26 | 小灵通/固话20元充值卡 | 19.00 |

| 5 | 索爱原装M2卡读卡器 | 20.00 |

| 22 | 多普达Touch HD | 5999.00 |

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

4 rows in set (0.02 sec)

mysql> #用union,取出第4个栏目的栏目,和第5个栏目的商品. 并按价格升序排列

mysql> (SELECT goods_id,goods_name,shop_price FROM goods WHERE cat_id = 4 ORDER BY shop_price DESC)

-> UNION

-> (SELECT goods_id,goods_name,shop_price FROM goods WHERE cat_id = 5 ORDER BY shop_price DESC);

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

| goods_id | goods_name | shop_price |

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

| 1 | KD876 | 1388.00 |

| 14 | 诺基亚5800XM | 2625.00 |

| 18 | 夏新T5 | 2878.00 |

| 33 | 金立910浪漫镶钻手机 | 1233.00 |

| 23 | 诺基亚N96 | 3700.00 |

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

5 rows in set (0.00 sec)

mysql> (SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 4 ORDER BY shop_price DESC)

-> UNION

-> (SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 5 ORDER BY shop_price DESC);

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

| goods_id | cat_id | goods_name | shop_price |

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

| 1 | 4 | KD876 | 1388.00 |

| 14 | 4 | 诺基亚5800XM | 2625.00 |

| 18 | 4 | 夏新T5 | 2878.00 |

| 33 | 4 | 金立910浪漫镶钻手机 | 1233.00 |

| 23 | 5 | 诺基亚N96 | 3700.00 |

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

5 rows in set (0.00 sec)

mysql> #上面这个做法就错了,应该是针对最终结果排序才对.

mysql> #应该如下写

mysql> SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 4

-> UNION

-> SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 5

-> order by shop_price asc;

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

| goods_id | cat_id | goods_name | shop_price |

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

| 33 | 4 | 金立910浪漫镶钻手机 | 1233.00 |

| 1 | 4 | KD876 | 1388.00 |

| 14 | 4 | 诺基亚5800XM | 2625.00 |

| 18 | 4 | 夏新T5 | 2878.00 |

| 23 | 5 | 诺基亚N96 | 3700.00 |

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

5 rows in set (0.00 sec)

mysql> (SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 4 ORDER BY shop_price DESC)

-> UNION

-> (SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 5 ORDER BY shop_price DESC)

->

-> order by shop_price asc;

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

| goods_id | cat_id | goods_name | shop_price |

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

| 33 | 4 | 金立910浪漫镶钻手机 | 1233.00 |

| 1 | 4 | KD876 | 1388.00 |

| 14 | 4 | 诺基亚5800XM | 2625.00 |

| 18 | 4 | 夏新T5 | 2878.00 |

| 23 | 5 | 诺基亚N96 | 3700.00 |

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

5 rows in set (0.00 sec)

mysql> #取第3个栏目,价格前3高,和第4个栏目,价格前2高.

mysql> #用union来完成

mysql> #先取3栏前3高

mysql> select goods_id,cat_id,goods_name,shop_price

-> from goods

-> where cat_id=3 order by shop_price desc limit 3;

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

| goods_id | cat_id | goods_name | shop_price |

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

| 22 | 3 | 多普达Touch HD | 5999.00 |

| 32 | 3 | 诺基亚N85 | 3010.00 |

| 17 | 3 | 夏新N7 | 2300.00 |

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

3 rows in set (0.00 sec)

mysql> #再取4栏前2高

mysql> select goods_id,cat_id,goods_name,shop_price

-> from goods

-> where cat_id=4 order by shop_price desc limit 2;

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

| goods_id | cat_id | goods_name | shop_price |

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

| 18 | 4 | 夏新T5 | 2878.00 |

| 14 | 4 | 诺基亚5800XM | 2625.00 |

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

2 rows in set (0.00 sec)

mysql> (select goods_id,cat_id,goods_name,shop_price from goods where cat_id=3 order by shop_price desc limit 3)

-> union

-> (select goods_id,cat_id,goods_name,shop_price

-> from goods

-> where cat_id=4 order by shop_price desc limit 2);

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

| goods_id | cat_id | goods_name | shop_price |

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

| 22 | 3 | 多普达Touch HD | 5999.00 |

| 32 | 3 | 诺基亚N85 | 3010.00 |

| 17 | 3 | 夏新N7 | 2300.00 |

| 18 | 4 | 夏新T5 | 2878.00 |

| 14 | 4 | 诺基亚5800XM | 2625.00 |

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

5 rows in set (0.00 sec)

mysql> #回到test库,观察union对于重复行的处理

mysql> use test

Database changed

mysql> create table test12 (

-> sname varchar(20)

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.11 sec)

mysql> create table test13 (

-> sname varchar(20)

-> )engine myisam charset utf8;

Query OK, 0 rows affected (0.28 sec)

mysql> insert into test12 values ('a'),('b'),('c');

Query OK, 3 rows affected (0.05 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> insert into test13 values ('b'),('c'),('d');

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from test12

-> union

-> select * from test13;

+-------+

| sname |

+-------+

| a |

| b |

| c |

| d |

+-------+

4 rows in set (0.00 sec)

mysql> select * from test12

-> union all

-> select * from test13;

+-------+

| sname |

+-------+

| a |

| b |

| c |

| b |

| c |

| d |

+-------+

6 rows in set (0.00 sec)

mysql> show tables;

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

| Tables_in_test |

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

| account |

| boy |

| category |

| class |

| girl |

| goods |

| m |

| m1 |

| member |

| mian |

| minigoods |

| result |

| salary |

| stu |

| t |

| test |

| test10 |

| test11 |

| test12 |

| test13 |

| test2 |

| test3 |

| test4 |

| test5 |

| test6 |

| test7 |

| test8 |

| test9 |

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

28 rows in set (0.03 sec)

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

mysql union update_MYSQL:union, 以及常用函数相关推荐

  1. mysql range用法_MySQL的常用函数

    MySQL常用函数 用户信息 系统用户名 mysql> select system_user(); 所有用户名 mysql> select user(); 当前用户名 mysql> ...

  2. mysql+if+x+mod+2_MySQL常用函数 二

    结合MySQL自带的帮助文档列一下MySQL数据库中常用的一些函数. 事实证明:MySQL的联机帮助资料非常实用,希望哪一天可爱的Oracle可以像MySQL学习一下,她可以让您基本不用查看其他的资料 ...

  3. mysql month函数值类型_MySQL常用函数(分类别整理)

    MySQL常用函数(分类别整理) 2021-01-30 一.数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最 ...

  4. mysql if value t f_mysql常用函数

    函数介绍 事先提供好的一些功能可以直接使用 函数可以用在SELECT语句及其子句 也可以用在UPDATE,DELETE语句当中. 函数分类 字符串函数 数值函数 日期和时间函数 流程函数 其它函数 字 ...

  5. mysql数值类型总结及常用函数

    最近在学习下,总结一下mysql数值类型: mysql字符类型分: 1.整数类型: 字节                    值范围 INTERGER               1         ...

  6. 【MySQL】(6)常用函数

    文章目录 日期函数 获取日期 日期计算 字符串函数 charset concat length substring replace instr strcmp ltrim, rtrim, trim 数学 ...

  7. 【一周入门MySQL—3】多表查询、子查询、常用函数

    多表查询.子查询.常用函数 一.多表查询 多表查询:通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息. 对应关系 一对一:比如下图的人员信息表和人员身份证对应表,一个员工只 ...

  8. 建立学生选课表 mysql 语句_学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)...

    学生选课数据库SQL语句45道练习题: 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...

  9. mysql注入报错函数_MySQL注入常用函数

    注入的分类 仁者见仁,智者见智. 基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 •基于布尔 SQL 盲注 •基于时间的 SQL 盲注 •基于报错 ...

最新文章

  1. 【多标签文本分类】融合CNN-SAM与GAT的多标签文本分类模型
  2. JAVA编程思想学习笔记——第一章 对象导论
  3. [js插件]JqueryUI日期插件
  4. CPropertySheet 与CPropertyPage 的基本使用
  5. IOS UIScrollView 滚动视图的使用和文档
  6. RestTemplate实践
  7. es6 async函数的异步迭代器
  8. 腾讯被深圳南山法院强制执行:执行标的25元;B站就招聘争议致歉;华为云回应是否将独立运作|极客头条...
  9. 数据库系统基础教程一:关系数据库与关系代数
  10. python偏最小二乘法公式,python3 偏最小二乘法实现
  11. 生活中的逻辑谬误06.德克萨斯神枪手
  12. 直播改革:关闭10家平台监管3万主播
  13. sam文件获取与解密
  14. 2014年服装设计短训班(周末班)招生简章-北京服装学院培训中心
  15. dism 错误 14
  16. 记一次修改开源1078音视频服务器兼容粤标音视频的变更
  17. 深度学习工作站攒机指南
  18. HQL的执行顺序(这是重点)
  19. 头条的动态页面爬取+百度下拉搜索框
  20. 微信小程序WIFI检测

热门文章

  1. 测试 RAM 盘和 DISK 盘的文件读写速度
  2. android钢琴软件和弦,‎App Store 上的“判断和弦以钢琴演奏 Piano Chord Judge”
  3. 针对初创型企业的高新企业认定知识及建议!
  4. 字符输出流 (Write)
  5. 山中老人 (updating)
  6. 2020-10-17
  7. java中的几个术语(覆写override,隐藏hiding,重载overload,遮蔽shadowing,遮盖obscuring)
  8. 触发字检测 trigger word detection
  9. 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片
  10. 国腾GM7123C:功能RGB转VGA芯片方案简介