我有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