MySQL左連接還有過濾條件_MySQL左連接問題,右表做篩選,左表列依然在?

問 題

原料

兩張表,一張user表,一張user_log表(這個例子舉的不好)

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_log` (

`id` int(10) NOT NULL,

`user_id` int(10) NOT NULL,

`log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

`message` varchar(30) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

問題

現在關聯查詢

SELECT u.*, ul.log_time, ul.message FROM user u LEFT JOIN user_log ul ON u.id = ul.user_id WHERE ul.log_time > 某個時間點 AND u.id = 4;

這樣查詢的話,篩選是對連接之后的結果進行的,左表的列不會存在的

我想做到大于某個時間點,右邊沒有數據,左表的列信息還在,右邊列為NULL

可能我沒表述清楚把,樓下的回答還是很感謝的:

插入數據

INSERT INTO `user` VALUES ('1', 'wang');

INSERT INTO `user` VALUES ('2', 'meng');

INSERT INTO `user` VALUES ('3', 'zhang');

-- ----------------------------

-- Records of user_log

-- ----------------------------

INSERT INTO `user_log` VALUES ('1', '1', '2017-07-20 13:13:07', 'some data');

INSERT INTO `user_log` VALUES ('2', '1', '2017-07-27 13:13:07', 'some data');

INSERT INTO `user_log` VALUES ('3', '1', '2017-07-28 13:13:07', 'some data');

INSERT INTO `user_log` VALUES ('4', '1', '2017-08-26 13:11:31', 'some data');

INSERT INTO `user_log` VALUES ('5', '1', '2017-08-26 17:11:31', 'some data');

INSERT INTO `user_log` VALUES ('6', '1', '2017-08-27 13:11:31', 'some data');

查詢,照樓下的做法:

mysql> SELECT u.*, ul.log_time, ul.message FROM user u LEFT JOIN user_log ul ON u.id = ul.user_id WHERE (ul.log_time > '2017-09-01 07:13:07' OR ul.log_time is NULL) AND u.id = 1;

Empty set

這里其實我想得到結果:

user的信息還是在的,ul的列都是null了

解決方案

把右表的過濾條件放到LEFT JOIN里,才會實現你說的效果,因為WHERE是對關聯后的結果做篩選,右表肯定會有值的

SELECT U.*, UL.LOG_TIME, UL.MESSAGE

FROM USER U

LEFT JOIN USER_LOG UL

ON U.ID = UL.USER_ID

AND (UL.LOG_TIME > '2017-09-01 07:13:07' OR UL.LOG_TIME IS NULL)

WHERE U.ID = 1;

992918a26da18f46479e2b9a26bece7f.png

掃一掃關注IT屋

微信公眾號搜索 “ IT屋 ” ,選擇關注與百萬開發者在一起

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

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

相關文章

2017工作總結

靜兒總結自己的職業生涯分為三個階段。第一個階段為期十年,是純技術階段,是人生的積累期。第二個階段是管理階段,是綜合能力整合期。第三個階段是突破階段,打造自己獨特的核心競爭力。 第一階段 剛畢業的同學可能會覺得技術高大上…

批量刪除table或view

一個個刪太費時了。一個簡單可行的方法。 思路: 找出要刪除的表名/視圖名,然后拼接刪除sql,執行。 批量刪除表: 1、找出要刪除的表名select table_name from user_tables where table_name like S1MSGLATENCY_2016032%;2、復制這…

編譯安裝mysql5.5.39_編譯安裝MySQL5.5

防偽碼:沒有相當程度的孤獨是不可能有內心的平和。1、測試環境主機名IP系統MySQL版本MySQL-00192.168.10.23CentOS release 6.9 (Final)5.5.562、部署2.1 卸載之前版本rpm -qa|grep mysqlrpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_642.2 安裝依賴包和cmakeyum…

你真的了解iOS怎么取屬性的嗎?

你真的了解iOS怎么取屬性的嗎? 本文來自CocoaChina粉絲FlyOceanFish投稿如果iOS中談到取屬性,相信大家都會夸夸其談,不就是get方法嗎?或者大談kvc取屬性的機制。不得不說這些也是對的。這時大家可能就疑惑了,那你還要說…

Oracle表的并行度

查看dba_tables數據字典時,可以發現有“DEGREE”字段,這個字段表示的就是數據表的并行度。這個參數的設置,關系著數據庫的I/O,以及sql的執行效率。并行度的優點就是能夠最大限度的利用機器的多個cpu資源,是多個cpu同時…

mysql 臨時表 限制_Mysql臨時表

當你創建臨時表的時候,你可以使用temporary關鍵字。如:create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null)‘或CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE MEMORY SELECT …from … where IDcurre…

10年老兵給程序員的10條建議!

2019獨角獸企業重金招聘Python工程師標準>>> 程序員雖然薪資待遇好,但是也得付出努力,技術好才行。特別是對于剛剛進入編程工作的新手程序員和正在學習編程的同學來說,一寫代碼就報錯,出bug。作為一個工作了10年的老兵…

視圖和表的區別和聯系

區別: 1、視圖是已經編譯好的sql語句。而表不是 2、視圖沒有實際的物理記錄。而表有。 3、表是內容,視圖是窗口 4、表只用物理空間而視圖不占用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進行修改&#xf…

mysql binlog日志三種格式_MySQL binlog三種格式詳細介紹

查看當前數據庫binlog日志格式:show global variables like %binlog_format%;一、三種格式介紹1.1 STATEMENT該格式下每一條會修改數據的sql都會記錄在binlog中;優點:不需要記錄每一行的變化,減少了binlog日志量,節約了…

2017阿里技術年度精選(全)

2019獨角獸企業重金招聘Python工程師標準>>> 2017年,在技術發展的歷史上,一定是個特別的一年:柯潔與AlphaGo的驚世大戰,無人咖啡店開放體驗,AI設計師“魯班”橫空出世、三年投入千億的達摩院正式成立…… 這…

查詢Oracle正在執行的sql語句,鎖表,解鎖

原文出處:http://blog.csdn.net/jlds123/article/details/6572559 ----------------------- --查詢Oracle正在執行的sql語句及執行該語句的用戶 [sql] view plaincopy SELECT b.sid oracleID, b.username 登錄Oracle用戶名, b.serial#, …

xampp for mac mysql_xampp for mac下載-Xampp Mac版下載 V7.3.2-PC6蘋果網

Xampp for mac是目前時下最流行的PHP開發環境,XAMPP是完全免費且易于安裝的Apache發行版,其中包含MySQL、PHP和Perl。XAMPP開放源碼包的設置讓安裝和使用出奇容易。整合型的Apache套件。XAMPP包括Apache、MySQL、PHP、PERL,直接解壓縮&#x…

15.2. important

<para><important>Text goes here.</important></para>重要Text goes here.原文出處&#xff1a;Netkiller 系列 手札 本文作者&#xff1a;陳景峯 轉載請與作者聯系&#xff0c;同時請務必標明文章原始出處和作者信息及本聲明。

查看表的創建時間

select OWNER,OBJECT_NAME,CREATED from dba_objects where OBJECT_NAME表名 CREATED 是表的創建時間 查詢 dba_objects 表需要dba權限

linux python2.7 scipy_scipy.sparse.linalg.sp為Linux系統上的大型稀疏矩陣解決了令人驚訝的行為...

我正在計算一個線性系統Ax b的解決方案&#xff0c;其中A具有一個大的(通常200,000行和相關的密集矩陣的列)稀疏矩陣和ba稀疏矩陣&#xff0c;大約100列。當我在Windows系統上運行代碼(Python2.7&#xff0c;scipy0.14.0)時&#xff0c;以下命令fromscipy.sparse.linalgimport…

簡簡單單的代碼讓你輕松學會 動態代理

原文出處&#xff1a;http://weixiaolu.iteye.com/blog/1477774 -------------------------------------------------------------------------- 簡簡單單的代碼讓你輕松學會動態代理 前言&#xff1a; 最近一直在分析hadoop的RPC機制。在hadoop中&#xff0c;DataNode和Na…

python變量和字符_Python變量和字符串

我需要知道Python中的變量是字符串(名稱)還是數字。我想檢查圖的度數&#xff0c;但是我需要知道“I”迭代器是字符串內部的一個數字還是字符串內的一個名稱&#xff0c;在末尾顯示了圖的度數。在這個代碼有什么問題嗎&#xff1f;在import csv, sysimport networkx as nxdef m…

Adobe軟件打開后設置默認頁面方式和默認鼠標方式

PDF文件打開后是默認顯示&#xff0c;與顯示器比例不協調&#xff0c;或大或小&#xff0c;總是需要手動調節閱讀方式&#xff0c;解決方法如下&#xff1a; Adobe軟件中可以設置默認頁面方式&#xff0c;具體步驟如下&#xff1a; 編輯 (Edit)-首選項(Preferences)-輔助工具…

CSS深入理解學習筆記之vertical-align

1、vertical-align基本認識 支持的屬性值&#xff1a; ①線類&#xff1a;baseline&#xff08;默認&#xff09;&#xff0c;top&#xff0c;middle&#xff0c;bottom ②文本類&#xff1a;text-top&#xff0c;text-bottom ③上標下標類&#xff1a;sub&#xff0c;super ④…

Java NIO原理 圖文分析及代碼實現

原文出處&#xff1a;http://weixiaolu.iteye.com/blog/1479656 ---------------------------------------------------------------------- Java NIO原理圖文分析及代碼實現 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol &#xff0c;遠程過程調用協議&am…