简单的聚合函数:
表一:table1(任务表)
字段:mid,name,age,mission(任务量),cardID(身份证)
表二:table2(完成量表)
字段:cid,complete(完成量)
要求:
1、合并两张表的数据
2、任务量和完成量,没有任何关联,某人可以只有任务量,可以只有完成量,或者两者都有,这是三种情况。
困难:
如果通过cardID字段inner join 进行内连接查询,那么,只能查询到既有任务量也有完成量的数据,会丢失大部分单个数据。
解决:联合查询
1、将两张表的关联字段提取出来(可能会有重合,先不管,我们最后用distinct去重就可以了)
(select cardId from table1
union all
select cardId from table2)
2、将上sql语句结果集取别名为:users,再根据cardId在两张表中提取自己所需的数据
select users.cardId,
(select mission from table1 where cardId=users.cardId),--任务量
(select complete from table2 where cardId=users.cardId) --完成量
from users
3、在第一步时提取两表的cardId时,可能会有重复的cardId,所以去除重复数据
在users.cardId前面添加distinct即可
完整SQL语句:
select distinct users.cardId,
(select mission from table1 where cardId=users.cardId),--任务量
(select complete from table2 where cardId=users.cardId) --完成量
from
(select cardId from table1
union all
select cardId from table2)users
补充:
如果还需要查询其他数据,(前提:该表要有cardId字段),那么在后面添加inner join ,left join表名;
在select后面用子查询提取所需数据
当然:自行添加,都需要符合SQL语句规范。