2014-09-04 129 views
0

我有table1Name與數據填充和table2沒有數據填充。SQL語句查詢

select * from [database1Name].dbo.table1Name 
join [database1Name].dbo.table2Name 
on [database1Name].dbo.table1Name.fieldName like value; 

運行上述sql語句後,它會加入表格,但不會顯示錶格'table1Name'中的任何填充數據。

爲什麼會發生這種情況?

+0

舉個例子,請 – mugiwaradz 2014-09-04 10:19:51

回答

5

使用JOIN這是一個INNER JOIN意味着它只會得到條件匹配的數據。所以如果第二個表沒有數據,那麼這個條件永遠不會被滿足,所以你不會得到任何數據。

在你的情況下,你需要一個LEFT JOIN。當條件滿足時,這將獲得左表(table1Name)中的所有行以及右表中的相應值。

SELECT * 
FROM [database1Name].dbo.table1Name 
     LEFT JOIN [database1Name].dbo.table2Name 
      ON [database1Name].dbo.table1Name.fieldName like [database1Name].dbo.table2Name.fieldName; 

只需提及使用連接就意味着您可能會從特定表中獲取單個行的多次。例如,因爲你有LIKE條件下,如果表1中的fieldName匹配fieldName的2行從表2,那麼你將得到從表2從表1含有在同一行兩行和兩列:

示例:

表1

FieldName 
1 
2 

表2

FieldName OtherField 
1   1 
1   2 

結果JOIN

T1FieldName T2FieldName T2OtherField 
1   1   1 
1   1   2 
2   NULL  NULL 
+0

Giannis您好,我現在明白了邏輯,謝謝!您的評論非常有幫助。 – Tech 2014-09-04 10:28:54

+0

在那張紙條上百分比(%)百搭字符的用途是什麼? – Tech 2014-09-04 10:34:25

+0

'LIKE'是一個運算符,用於檢查兩個字符串類型字段是否相似。 'LIKE'需要通配符。如果你不使用通配符,那麼它實際上是一個平等運算符。 %表示「任何字符序列」,意味着%匹配任何字符的長度。 – 2014-09-04 10:38:02