【问题标题】:Joins in conditional statement in SQL Query在 SQL Query 中加入条件语句
【发布时间】:2010-12-04 12:42:16
【问题描述】:
我有这样的场景,我需要在条件中添加我的加入
例如如果值为 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
谢谢
【问题讨论】:
标签:
sql
sql-server
database
conditional
【解决方案1】:
这行得通吗?在两个条件下外部连接两个表,并将条件放在您的 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
【解决方案2】:
您发现该构造在 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