2017-01-30 44 views
0

在WHERE子句中有一個過濾器。它的目的是什麼?我試圖理解這背後的邏輯。如果甚至不在SELECT語句中,我甚至不需要連接表B。爲什麼要加入另一個不在SELECT語句中的表?

例子:

Select 
    A.col1, 
    A.col2, 
    A.col3 
    From table A 
    Inner join Table B 
    On A.A = B.B 

    Where B.col = value 
+0

非常簡單,就是確保只從A中取出相應行中的行。考慮一組學生,並且想知道所有參加特定考試的學生。你不關心他們如何得分,只是他們參加了測試,所以輸出不需要包含測試表中的任何列。 –

+0

您正在通過執行INNER JOIN過濾記錄。如果某些內容不符合「JOIN」條件,則會將其從結果中濾除。另外,你只需要查找'TableB'中匹配'col = value'的東西。如果這兩種情況均失敗,則記錄將被過濾掉。結果記錄只顯示來自'A'側的值。嘗試用'SELECT *'替換'SELECT'並註釋掉'WHERE'和'JOIN'來直觀地看到發生了什麼。 – Siyual

回答

2

想象一下,你有兩個表,個人和企業(公司的人目前正在在)。你想選擇所有在同一家公司工作的人(比如Google)。如果您沒有將人員加入公司,您將無法撰寫該條件,因爲您的條件是指公司表格中的列。

相關問題