我有table1Name與數據填充和table2沒有數據填充。SQL語句查詢
select * from [database1Name].dbo.table1Name
join [database1Name].dbo.table2Name
on [database1Name].dbo.table1Name.fieldName like value;
運行上述sql語句後,它會加入表格,但不會顯示錶格'table1Name'中的任何填充數據。
爲什麼會發生這種情況?
我有table1Name與數據填充和table2沒有數據填充。SQL語句查詢
select * from [database1Name].dbo.table1Name
join [database1Name].dbo.table2Name
on [database1Name].dbo.table1Name.fieldName like value;
運行上述sql語句後,它會加入表格,但不會顯示錶格'table1Name'中的任何填充數據。
爲什麼會發生這種情況?
使用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
舉個例子,請 – mugiwaradz 2014-09-04 10:19:51