内部联接与if条件

时间:2012-02-22 21:01:43

标签: sql sql-server-2005

我只是在表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

5 个答案:

答案 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