MySQL關聯left join 條件on與where不同

以下的文章主要講述的是MySQL關聯left join 條件on與where 條件的不同之處,我們現在有兩個表,即商品表(products)與sales_detail(銷售記錄表)。我們主要是通過這兩個表來對MySQL關聯left join 條件on與where 條件的不同之處進行講述。

products:

pid pname pcode

1 商品1 AC90

2 商品2 DE78

3 商品3 XXXX

sales_detail:  
aid pcode saletime  
1 AC90 2008-09-22  
2 DE78 2008-09-22  
3 AC90 2008-09-23  
4 AC90 2008-09-24 
某個時間段內的銷售量來排行,比如我想統計23-24號這兩天的銷售數量并排行。(注:DE78這個商品在這兩天沒有銷售,但是也要顯示出來,只是數量為0)。

MySQL關聯left join條件on和where條件的區別表的結構 `products`

CREATE TABLE `products` (  
`pid` int(3) NOT NULL auto_increment,  
`pname` varchar(20) NOT NULL,  
`pcode` varchar(20) NOT NULL,  
PRIMARY KEY (`pid`)  
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

導入表中的數據 `products`

INSERT INTO `products` (`pid`, `pname`, `pcode`) VALUES 
(1, '商品1', 'AC90'),  
(2, '商品2', 'DE78'),  
(3, '商品3', 'XXXX'); 
表的結構 `sales_detail`

CREATE TABLE `sales_detail` (  
`aid` int(3) NOT NULL auto_increment,  
`pcode` varchar(20) NOT NULL,  
`saletime` date NOT NULL,  
PRIMARY KEY (`aid`)  
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 
表中的數據 `sales_detail`

INSERT INTO `sales_detail` (`aid`, `pcode`, `saletime`) VALUES 
(1, 'AC90', '2008-09-22'),  
(2, 'DE78', '2008-09-22'),  
(3, 'AC90', '2008-09-23'),  
(4, 'AC90', '2008-09-24'); 

MySQL關聯left join條件on和where條件的區別區別兩條sql語句:

select p.pname,p.pcode,s.saletime,count(s.aid) as total 
from products as p  left join sales_detail as s 
on (s.pcode=p.pcode)  
where s.saletime in ('2008-09-23','2008-09-24')   
group by p.pcode 
order by total desc,p.pid asc+-------+-------+------------+
| pname | pcode | saletime   |
+-------+-------+------------+
| 商品1 | AC90  | 2008-09-23 |
+-------+-------+------------+select p.pname,p.pcode,s.saletime,count(s.aid) as total 
from products as p  left join sales_detail as s 
on ((s.pcode=p.pcode) and s.saletime in ('2008-09-23','2008-09-24'))   
group by p.pcode 
order by total desc,p.pid asc+-------+-------+------------+-------+
| pname | pcode | saletime   | total |
+-------+-------+------------+-------+
| 商品1 | AC90  | 2008-09-23 |     2 |
| 商品2 | DE78  | NULL       |     0 |
| 商品3 | XXXX  | NULL       |     0 |
+-------+-------+------------+-------+ 

心得:on中的條件關聯,一表數據不滿足條件時會顯示空值。where則輸出兩表完全滿足條件數據。

轉載于:https://www.cnblogs.com/moqiang02/p/4061165.html

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

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

相關文章

自動裁剪圖片

自動裁剪商品圖片View Code執行裁剪指定目錄商品圖片動作///<summary> ///執行指定目錄商品圖片動作 ///</summary> public static void FindPictureDoCutIt(object o) {string filePatho.ToString();try{DirectioryInfo fatherFolder new DirectioryInfo(filePat…

32位oracle_oracle 性能調優

pool&#xff0c;sga&#xff0c;pga的配置 物理內存16G在調整SGA前&#xff0c;先看下服務器操作系統是32位還是64位的&#xff0c;如果是32位的&#xff0c;則SGA最大不能超過1.7G&#xff0c;如果是64位的&#xff0c;則不能超過4G。基本分配原則&#xff0c;db_block_buffe…

看網絡電子圍欄如何做好周界安防

圍欄是為了保護一定范圍內的任何物遭到侵害而設立的一個屏障&#xff0c;在一定程度上有保護的作用&#xff0c;但是也不能完全阻止。傳統的圍欄以加高或者添加危險觸碰物來增加安全性&#xff0c;但是會影響美觀&#xff0c;不能進行主動擊退&#xff0c;也給圍欄內人物帶來不…

Objective-C語法之代碼塊(block)的使用

代碼塊本質上是和其它變量相似。不同的是&#xff0c;代碼塊存儲的數據是一個函數體。使用代碼塊是&#xff0c;你能夠像調用其它標準函數一樣&#xff0c;傳入參數數&#xff0c;并得到返回值。脫字符&#xff08;^&#xff09;是塊的語法標記。依照我們熟悉的參數語法規約所定…

C#委托和事件

http://www.cnblogs.com/leslies2/archive/2012/03/22/2389318.html 講解比較好 轉載于:https://www.cnblogs.com/sun-shadow/p/4872768.html

asp.net mvc使用mysql_ASP.NET開發實戰——(八)ASP.NET MVC 與數據庫之MySQL

之前介紹了My Blog如何使用http://ADO.NET來訪問SQL Server獲取數據。本章將介紹如何使用My SQL來完成數據管理。在使用My SQL之前需確保開發環境中安裝了My SQL數據庫和Connector/Net&#xff0c;后者是一個用C#編寫的http://ADO.NET數據提供器&#xff0c;換句話說無論使用SQ…

多元時代個人信息更需強有力保護

有網友反映&#xff0c;用多個搜索引擎搜索“手持身份證照片”&#xff0c;皆出現大量相關圖片&#xff0c;人臉清晰&#xff0c;身份證號碼等關鍵信息明白無誤。不少網友擔心“這么重要的信息就這么暴露&#xff0c;太危險”。記者發現&#xff0c;其中有弱勢群體求助信息&…

修改Eclipse自動換行長度

使用CtrlShiftF自動格式化代碼的時候&#xff0c;有時候折行太多反而讓代碼看起來更亂&#xff0c;不容易閱讀。 解決辦法&#xff1a; Window-->Preferences-->Java-->Code Style-->Formatter-->Edit-->Line Wrapping-->Maximum line width根據需要設置&…

卓越管理的實踐技巧(1)如何進行有效的指導 Guidelines for Effective Coaching

Guidelines for Effective Coaching 前文卓越管理的秘密&#xff08;Behind Closed Doors&#xff09;最后一部分提到了總結的13條卓越管理的實踐技巧并列出了所有實踐技巧名稱的索引&#xff0c;這篇文章主要寫卓越管理的實踐技巧的第&#xff08;1&#xff09;條&#xff1a;…

Java Web應用的生命周期

Java Web應用的生命周期。三個階段&#xff1a;啟動&#xff0c;運行&#xff0c;終止。  無論是web還是servlet他們的生命周期都是有容器來控制的。  啟動&#xff1a;  1. 把web.xm 加載到內存中  2. 為web應用創建一個ServletContext對象  3. 對所有的Filter進行初…

count返回0_你是一直認為 count(1) 比 count(*) 效率高么?

MySQL count(1) 真的比 count(*) 快么? 反正同事們都是這么說的&#xff0c;我也姑且覺得對吧&#xff0c;那么沒有自己研究一下究竟&#xff1f;如果我告訴你他們一樣&#xff0c;你信么&#xff1f;有 Where 條件的 count&#xff0c;會根據掃碼結果count 一下所有的行數&am…

13點建議順利通過JAVA面試【轉載】

原文&#xff1a;http://www.javamm.com/?p7274 找到一份高薪的java工作&#xff0c;從程序員走向高級程序員、架構師、分析員&#xff0c;是所有java程序員們的追求。 找一份好工作&#xff0c;自然要看工作經歷、項目積累、綜合能力。但是&#xff0c;在繁忙、瑣碎的日常工作…

微軟過冬的三大姿勢:裁員,回購400億美元股票,在中國開合資公司

近期沒什么大新聞的微軟&#xff0c;現在有了。 回購400億美元股票&#xff0c;給股東發“紅包” 先看一條開心的。根據外媒BusinessInsider的報道&#xff0c;微軟日前發表聲明稱&#xff0c;董事會已經批準了一項價值上限達400億美元的新股票回購計劃&#xff0c;此次回購計劃…

獲取進程CPU占用率

獲取進程CPU占用率 // 時間轉換 static __int64 file_time_2_utc(const FILETIME* ftime) {LARGE_INTEGER li;li.LowPart ftime->dwLowDateTime;li.HighPart ftime->dwHighDateTime;return li.QuadPart; }// 獲得CPU的核數 static int get_processor_number() {SYSTEM_…

dbeaver連接mysql失敗_關于DBeaver連接MySQL數據庫遇到的版本問題解決

在使用DBeaver連接MySQL數據庫時&#xff0c;明明按照它提示進行jar包的下載&#xff0c;但是仍然報錯&#xff0c;提示版本問題&#xff0c;那么這個時候我們要解決的就是MySQL版本對應驅動包的問題。筆者經過測試后有了一些心得&#xff0c;放上來希望對大家能夠有所參考。首…

巴倫周刊:“物聯網”正走向死胡同

作為當今科技界最流行的熱門術語之一&#xff0c;“物聯網”實際上是個使用不當的稱呼&#xff0c;而對于科技界來說這是個大問題。顧名思義&#xff0c;“物聯網”是由大量設備組成&#xff0c;比如智能家居設備制造商Nest的家用恒溫器、蘋果公司智能手表Apple Watch以及健身設…

【WIN10】VisualStateManager使用說明

Demo下載&#xff1a;http://yunpan.cn/cFjgPtWRHKH9H 訪問密碼 c4b7 顧名思義&#xff0c;視圖狀態管理器。 在WPF中&#xff0c;它的功能似乎更強大。在UWP中&#xff0c;閹割了GotElementState方法&#xff0c;導致它只能在控件內部使用。 這個東東一般用來突出某些操作&am…

mysql against包含英文_在MySQL中使用MATCH和AGAINST選擇特定列中包含字符串的行

讓我們首先創建一個表-mysql> create table DemoTable1833(Name varchar(20));修改表-Mysql> alter table DemoTable1833 ADD FULLTEXT(Name);Records: 0 Duplicates: 0 Warnings: 1使用插入命令在表中插入一些記錄-mysql> insert into DemoTable1833 values(John D…

Hadoop偽分布配置與基于Eclipse開發環境搭建

國內私募機構九鼎控股打造APP&#xff0c;來就送 20元現金領取地址&#xff1a;http://jdb.jiudingcapital.com/phone.html內部邀請碼&#xff1a;C8E245J &#xff08;不寫邀請碼&#xff0c;沒有現金送&#xff09;國內私募機構九鼎控股打造&#xff0c;九鼎投資是在全國股份…

百度地圖JavaScript API覆蓋物旋轉時出現偏移

在項目中&#xff0c;調用百度地圖JavaScript API&#xff0c;做覆蓋物的旋轉再添加到地圖上&#xff0c;結果出現偏移了。 調試過程中的效果圖&#xff1a; 發現圖片的旋轉并不是按車子的中心來的&#xff0c;而是之外的一個點。最后發現犯了一個很細節的錯&#xff1a; <s…