在SQL Query中加入条件语句

时间:2009-10-07 06:21:37

标签: sql sql-server database conditional

我有这样的场景,我需要在条件

中添加我的联接

e.g。当值为1时,内连接到表a,如果值为2,则内连接到表

下面是我的示例查询,我收到错误关键字'inner'附近的语法不正确

DECLARE @i INT=1
select name from emp
if(@i=1) 
begin
inner join a on a.ID=emp.ID
end
else if(@i=1) 
begin
inner join b on b.ID=emp.ID
end
where emp.ID=2

由于

2 个答案:

答案 0 :(得分:4)

这会有用吗?外部在两个条件中连接两个表,并将条件放在select子句中,如下所示:

select name, case when @i=1 then a.column else b.column end from emp
left outer join a on a.ID=emp.ID
left outer join b on b.ID=emp.ID
where emp.ID=2

答案 1 :(得分:0)

正如您发现构造在SQL中是非法的。 IF语句不能包含在DML查询中。但是,可以编写两个单独的查询(在此过程中引入一些重复)并使一个或另一个有条件地选择

DECLARE @i INT
SET @i=1
if(@i=1) 
  begin
      select name from emp
      inner join a on a.ID=emp.ID
      where emp.ID=2
  end
  else if(@i=2) 
  begin
      select name from emp
      inner join b on b.ID=emp.ID
      where emp.ID=2
  end