SQL如何合并多个查询结果 5
4个查询的语句分别如下,分别是mz_ypxx和mz_ypxx_tc两份表:
select ypbm from mz_ypxx_tc;
select ypmc from mz_ypxx,mz_ypxx_tc where mz_ypxx_tc.ypbm=mz_ypxx.ypbm;
select tcbm from mz_ypxx_tc;
select ypmc from mz_ypxx_tc,mz_ypxx where mz_ypxx_tc.tcypbm=mz_ypxx.ypbm;
4个查询分别是4个不同的列,我现在就是想把这4列合在一起,合成一个有4列的表 展开
合并结果一般用union或者union all,具体用什么取决于需求。
如数据如下:
A表:
id name
1 张三
2 李四
3 王五
B表:
id name
1 张三
2 赵六
3 孙七
如果
select id,name from A
union all
select id,name from B;
结果:
id name
1 张三
2 李四
3 王五
1 张三
2 赵六
3 孙七
如果:
select id,name from A
union
select id,name from B;
结果:
id name
1 张三
2 李四
3 王五
2 赵六
3 孙七
也就是说union all在执行后,不会把相同的结果合并,而union会把相同的结果只显示成一行。
但是使用这个关键字你需要知道
并操作
1所有查询中的列数和列的顺序必须相同
2数据类型必须兼容啊
1.两个不同的表进行查询,需要把结果合并,
比如table1的列为 id, user_id, type_id,pro_id;
table2的列为 id,user_id,collect_id;分别如下图所示
table1:
table2:
2.将两个表的查询结果合并到一起的查询语句为
select *, null as collect_id from table1 where user_id = 527
union
select id,user_id,null as type_id,null as pro_id, collect_id from table2 where user_id = 527;
3.结果为:
总结:其实就是把对应的列补充到没有该列的表中,在例子中就是把collect_id补充到table1中,
把type_id,pro_id补充到table2中。