假設我有2個表。SQL條件內連接
Nav:
-----------
id INT NOT NULL,
title VARCHAR(50) NOT NULL,
target_page INT DEFAULT NULL;
Pages:
-----------
id INT NOT NULL,
url VARCHAR(200) NOT NULL,
access_level INT NOT NULL;
請注意,Nav中的target_page可以爲NULL。 如果我想同時選擇從導航我可以使用內部數據從頁面獲得URL加入:
SELECT Nav.id, Nav.title, Pages.url FROM Nav
INNER JOIN Pages ON Pages.id = Nav.target_page
如果我想添加一個額外的條件,讓說,該系統目前用戶只能看到網頁他們有機會獲得我可以添加一個額外條件:
SELECT Nav.id, Nav.title, Pages.url FROM Nav
INNER JOIN Pages ON Pages.id = Nav.target_page
WHERE Pages.access_level <= OurImaginaryUserLevel
內部聯接確保用戶不具有行從鏈接到記錄在頁面誰的ACCESS_LEVEL比用戶的更大導航返回。
但是,Nav中的一些記錄具有NULL的target_page。即使INNER JOIN阻止它們被返回,我也想返回這些記錄,因爲Pages中沒有記錄,其ID爲NULL。
只有具有NULL的target_page的記錄免於INNER JOIN。只有當Pages表中的匹配項符合Pages.access_level條件時,纔會返回具有Not NULL target_page的記錄,因此我無法使用左連接。
如果我的要求很難理解,我很抱歉。隨意問任何問題。
在此先感謝
輝煌的工程太棒了!我忘記了使用左連接,無論是將條件放在WHERE子句還是ON子句之後,都很重要。非常感謝你! –
很高興爲您服務。 :) –