我只是在表2中存在TableID的RepID时才尝试使用内连接编写查询,如果不是不连接table2。使用我在下面使用的查询,如果表2中不存在repID,我不会从这两个表中获取。这怎么可能?我正在使用sql server 2005.提前谢谢!
Select * from Table1
inner join Table2 on Table1.RepID = Table2.RepID
where Table1.Date = @Date
order by Table1.Date desc
答案 0 :(得分:2)
尝试" LEFT JOIN"而不是" INNER JOIN"。
单词" LEFT"意味着"始终包括联盟左边表格中的每条记录,"在这种情况下,表1,因为你将写:表1 LEFT JOIN Table2," Table1"在那对的左边! : - )
答案 1 :(得分:2)
如果在联接的两侧找到匹配项,则内部联接仅返回一行。如果您要查找的内容将返回Table1中的所有行,但只有找到匹配项时Table2中的记录,则需要左外连接:
select * from Table1 as t1
left outer join Table2 as t2
on t1.RepID = t2.RepID
where t1.Date = @Date
order by t1.Date desc
答案 2 :(得分:0)
听起来你真正想要的是左外连接,不是吗?
答案 3 :(得分:0)
SELECT *
FROM Table1
LEFT JOIN Table2
ON Table1.RepID = Table2.RepID
WHERE Table1.Date = @Date
ORDER BY Table1.Date DESC;
答案 4 :(得分:0)
那是外连接的用途。
Select * from Table1
left outer join Table2 on Table1.RepID = Table2.RepID
where Table1.Date = @Date
order by Table1.Date desc