mysql不同字段full join_Mysql實現full join的替換方法

目前mysql還不支持full join,只能使用left join、union、right join來實現。但使用這個方法解決多次full join的話代碼量非常龐大,一直在思考有沒有其他替代方法。

今天解決一個問題的時候突然想到了一個替代方法:使用行列轉換。

這個方法有一定的局限性,就是連接條件在2個連接表中最多只能有一條記錄(不過大部分連接情況也就是連接條件在連接表中最多只有一條記錄)。

下面是我具體實現的sql:

select

b.the_day, max(if(b.type_id = 1, b.amount, 0)) purchase_amount, max(if(b.type_id = 1, b.interest, 0)) purchase_interest,

max(if(b.type_id = 2, b.amount, 0)) withdrawal_amount, max(if(b.type_id = 2, b.interest, 0)) withdrawal_interest

from

(select

a.the_day, round(max(if(a.type_id = 1, a.money, 0))) amount, max(if(a.type_id = 2, a.money, 0)) interest, 1 type_id

from

(select

date(pe.purchase_begin_time) the_day, sum(pe.amount) money, 1 type_id

from

purchase pe

inner join product pt on pe.product_id = pt.product_id and pt.type_id = 9

where pe.purchase_status_id = 4 and pe.purchase_begin_time < '2015-08-13 21:00:00'

group by the_day

union all

select

date(uci.creat_time) the_day, sum(uci.interest) money, 2 type_id

from

user_current_interest uci

where uci.type = 'IN' and uci.creat_time < '2015-08-14'

group by the_day

) a

group by a.the_day

union all

select

date(wd.withdrawal_begin_time) the_day, sum(wd.amount), sum(wd.profit), 2 type_id

from

withdrawal wd

where wd.withdrawal_status_id in (4, 5) and wd.product_id = 0 and wd.withdrawal_begin_time < '2015-08-14'

group by the_day

) b

group by b.the_day; 大致思路說下:2個被連接表增加一個標識字段,使用不同的值,之后將這2個表union all下,使用連接條件將union all的結果分組且使用行列轉換。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言經典面試題目(轉的,不過寫的的確好!)

第一部分&#xff1a;基本概念及其它問答題 1、關鍵字static的作用是什么&#xff1f; 這個簡單的問題很少有人能回答完全。在C語言中&#xff0c;關鍵字static有三個明顯的作用&#xff1a; 1). 在函數體&#xff0c;一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變…

mysql 四大基礎操作_mysql數據庫的基本操作

mysql數據庫的基本操作首先我們要把mysql裝好mkdir chen/mount.cifs //192.168.100.23/LNMP chen/[rootlocalhost ~]# yum -y install \gcc \gcc-c \ncurses \ncurses-devel \bison \cmake[rootlocalhost ~]# useradd -s /sbin/nologin mysql[rootlocalhost ~]# cd chen/[rootl…

如何選擇合適的監視器?

1、可視面積 在購買液晶監視器的時候&#xff0c;最先考慮的就是“面子”大小。對于液晶監視器來說&#xff0c;其面板的大小就是可視面積的大小&#xff0c;這一點與CRT監視器有些不同。同樣參數規格的監視器&#xff0c;LCD要比CRT的可視面積更大一些&#xff0c;一般15英寸L…

匯編工具安裝三:已經配置好的匯編開發工具!

下載地址&#xff1a;http://download.csdn.net/detail/sunylat/9189543 MASM32&#xff1a;在32位操作系統正確安裝后的MASM32&#xff0c;完全可以在64位中正常工作。 RadASM&#xff1a;已經配置好的RadASM&#xff0c;可以直接使用MASM編譯器&#xff0c;可以直接開發匯編…

mysql中sex設置男女_MYSQL常用命令(3)

MYSQL常用命令(3)白玉 IT哈哈1、建表命令&#xff1a;create table ( [,.. ]);create table MyClass(id int(4) not null primary key auto_increment,name char(20) not null,sex int(4) not null default 0,degree double(16,2));2、獲取表結構命令&#xff1a; desc 表名&am…

對easyUI中課堂源碼編輯改進建議

在孫宇老師講得Easyui第10講完后&#xff0c;基本的增刪該查做出來了&#xff0c;但是編輯存在一個問題&#xff1b;行內樣式編輯修改&#xff0c;如果當用戶沒有修改數據&#xff0c;孫宇老師講得時候直接return&#xff0c;這樣做是不合理的&#xff1b;第二次再使用右鍵編輯…

一個理性戰勝感性的成功案例:P2P投資和活期理財,糾結中提煉出來的1個數學問題...

我經常是投資了P2P&#xff0c;然后用錢&#xff0c;因而損失了一部分收益。這是一個讓我糾結的問題&#xff0c;為了解決這個問題&#xff0c;我不再憑感覺&#xff0c;而是從現實情況&#xff0c;提煉出來1個數學題&#xff0c;解答我的疑惑。這是一個理性戰勝感性的成功案例…

阻礙物聯網騰飛幾大難題盤點 看能想出什么對策

按照思科的說法&#xff0c;到2020年&#xff0c;全球將有超過500億臺聯網設備&#xff0c;而據專家估計&#xff0c;在未來五年中&#xff0c;IoT將對全球經濟產生3.5萬億美元的影響。不只是冰箱&#xff0c;我們還會看到家庭能源系統、安全設備、娛樂產品、游戲、交互式穿戴設…

2014年9月6日

第一題&#xff0c;神題不可做。 第二題&#xff0c;傻逼題裸裸的轉移。。顯而易見。 1 #include<iostream>2 #include<cstdio>3 #include<cstring>4 using namespace std;5 double a[20][20];6 double dp[2000010];7 int main()8 {9 // freopen("b.…

[Labview資料] labview事件結構學習

編程的主要目的是為了實現用戶的某種功能&#xff0c;用戶通過用鼠標、鍵盤、程序內部等觸發某種程序動作&#xff0c;從而達到某種結果&#xff0c;這些操作都被稱作為事件&#xff0c;LabVIEW中相應這些事件最常用的結構就是“事件結構”。事件結構內容豐富&#xff0c;基本上…

干不掉的釘釘:從哪來,往哪去?

作為阿里巴巴最有經驗的產品經理之一&#xff0c;陳航習慣了“立項、開發、回到起點”的循環&#xff0c;但最近的一次“回到起點”&#xff0c;卻讓他記憶猶新。 那是在2014年5月26日&#xff0c;陳航帶著一支不到10人的團隊從阿里巴巴的西溪園區&#xff0c;搬進了位于杭州文…

mysql起止時間怎么寫_【Mysql 學習】日期函數函數

--curdate()返回當前日期mysql> select curdate();------------| curdate() |------------| 2011-01-01 |------------1 row in set (0.00 sec)--curtime()返回當前時間mysql> select curtime();-----------| curtime() |-----------| 09:23:15 |-----------1 row in s…

puppet運維自動化之用戶管理

系統管理員離不開賬戶管理&#xff0c;賬戶管理&#xff0c;密碼管理&#xff0c;開發機器&#xff0c;測試機器&#xff0c;線上機器&#xff0c;都需要創建用戶&#xff0c;并給與相關用戶的權限。你如果要創建100個&#xff0c;1000個賬戶和密碼&#xff0c;你會不會瘋掉&am…

c#中異步編程

異步是現實生活中的很多現象的一種抽象。比如分工合作在很多時間段就是異步合作。異步中也一般要涉及委托方法。c#有3種模式的異步編程&#xff1a;異步模式&#xff0c;基于事件的異步模式&#xff0c;基于任務的異步模式(TAP). 一. FrameWork 4.0之前的線程世界     在.N…

《交互式程序設計 第2版》一3.6 關系比較

本節書摘來華章計算機《交互式程序設計 第2版》一書中的第3章 &#xff0c;第3.6節&#xff0c;Joshua Noble 著 毛順兵 張婷婷 陳宇 沈鑫 任燦江 譯更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。 3.6 關系比較 與元組類型類似&#xff0c;關系類型也逃不過“比較運…

mysql 版本更新日志_mysql升級步驟

升級前先請做好數據備份1.解壓tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz2.關閉mysql5.6.23數據庫 service mysqld stop3.將5.7.9版本放到默認目錄下面mv mysql-5.7.9-linux-glibc2.5-x86_64 /usr/local/mysql4.修改/usr/local/mysql/data 下面的權限chown -R mysql…

C語言中,宏和全局變量的區別是什么?

全局變量 是可以在程序中任何地方使用 而且是可以修改的 宏定義也可以在任何地方使用 但是不能在之后修改 數據類型沒有限制的宏的例子&#xff1a;#define 宏名 宏體 #define PI 3.1415926轉載自&#xff1a; http://zhidao.baidu.com/link?urlDamb48copKtKBsDeugBDIPT7bk…

android 入門-android自定義控件

第一種&#xff1a;繼承View 實現自己的屬性 <com.cc.imagewithmarkersample.MyViewandroid:id"id/myviewid"android:layout_width"wrap_content"android:layout_height"wrap_content"android:layout_centerHorizontal"true"SrcLT&…

Undefined symbols for architecture i386:_OBJC_CLASS_$_xx, referenced from: 解決方法

多個人共同操作同一個項目或拷貝項目時&#xff0c;經常會出現類似這樣的問題&#xff1a; Undefined symbols for architecture i386: "_OBJC_CLASS_$_xx文件名", referenced from: 下面是可能導致這類問題出現的原因及修改&#xff1a; 1.相關工程文件未導入 你可以…

mysql cmake錯誤_MySQL5.5安裝出現CMake錯誤找不到CMakelists.txt原因-阿里云開發者社區...

今天虛擬機上測試安裝 CentOS6.3 PHP5.4.8 MySQL5.5.28&#xff0c;結果搗鼓了半天 MySQL都沒裝上&#xff0c;老是CMake目錄下找不到那個 lists 文件&#xff0c;郁悶的不行&#xff0c;最后發現問題所在&#xff0c;總結在下面(我是把軟件包下載錯了)&#xff1a;1. 檢查參…