MySQL查询同一个表不相同列_SQL 列不同的表查询结果合并操作

本文介绍了如何使用SQL的UNION ALL和JOIN操作合并来自不同表的数据。示例展示了如何将具有不同列的table1和table2的查询结果合并,并补充缺失的列。通过示例查询语句,解释了如何根据user_id筛选并合并两个表的数据,最终得到一个包含所有列的合并结果。
摘要由CSDN通过智能技术生成

两个不同的表进行查询,需要把结果合并,

比如table1的列为 id, user_id, type_id,pro_id;

table2的列为 id,user_id,collect_id;分别如下图所示

table1:

b2d80da3ea53087954bbc1432fa6c0b2.png

table2:

024e8ad57d2640f9675e977806e34ac9.png

将两个表的查询结果合并到一起的查询语句为

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;

结果为:

e418e64082ec82f9521b27410cf54a17.png

其实就是把对应的列补充到没有该列的表中,在例子中就是把collect_id补充到table1中,

把type_id,pro_id补充到table2中。

补充知识:sql结果集合并用union all 不同表的列合并用join

结果集合并用union all 不同表的列合并用join

SELECT

"模块名",

"事件编码",

"点击数量",

"使用时长(单位:分)"

FROM

(SELECT

T.fun_name as "模块名",

T.event_code as "事件编码",

SUM(click_records) as "点击数量"

FROM

(SELECT m.* FROM default.daily_new_clientrpt_master m WHERE event_id in ( SELECT max(event_id) AS "事件" from default.daily_new_clientrpt_master group by user_name,fun_code ORDER BY "事件" DESC ) ) T where day = today() GROUP BY "模块名" ,"事件编码") T5

JOIN

(

SELECT

T.fun_name as "模块名",

T.event_code as "事件编码",

round(sum(stay_time)/60000,0) as "使用时长(单位:分)"

FROM

(SELECT m.* FROM default.daily_new_clientrpt_master m WHERE event_id in

(

SELECT "事件" FROM (

SELECT max(event_id) AS "事件", max(stay_time) AS "事件1" from default.daily_new_clientrpt_master group by user_name,fun_code ORDER BY "事件1" DESC) )

)

T where day = today() AND like(event_code,'%10000') GROUP BY "模块名" ,"事件编码"

) T6 ON T5."模块名"=T6."模块名" AND T5."事件编码"=T6."事件编码"

以上这篇SQL 列不同的表查询结果合并操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: SQL 列不同的表查询结果合并操作

本文地址: http://www.cppcns.com/shujuku/mysql/356210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值