【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      相关资源
      最近更新 更多