我有这样的场景,我需要在条件
中添加我的联接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
由于
答案 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