1. 程式人生 > 資料庫 >SQL 列不同的表查詢結果合併操作

SQL 列不同的表查詢結果合併操作

兩個不同的表進行查詢,需要把結果合併,

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

table2的列為 id,collect_id;分別如下圖所示

table1:

SQL 列不同的表查詢結果合併操作

table2:

SQL 列不同的表查詢結果合併操作

將兩個表的查詢結果合併到一起的查詢語句為

select *,null as collect_id from table1 where user_id = 527
union
select id,null as type_id,null as pro_id,collect_id from table2 where user_id = 527;

結果為:

SQL 列不同的表查詢結果合併操作

其實就是把對應的列補充到沒有該列的表中,在例子中就是把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 "模組名",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 列不同的表查詢結果合併操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。