SQL Server +条件连接

k80*_*0sg 1 sql-server

有没有办法可以执行这样的条件连接:

   CREATE TABLE #Entity 
   (    
    [AutoID] [int],
    [Code] [nvarchar](50) NOT NULL,
   )

    INSERT #Entity
    EXEC Entity_GetEntitiesByUserId @UserID

    DECLARE @Condition bit = 0

    SELECT * FROM [Stuff] s

       IF @Condition = 1 BEGIN

       INNER JOIN 
       (
        SELECT Code as eCode from
        #Entity
       ) e
        ON E.eCode  = s.EntityCode 

       END

       WHERE DeletedBy IS NULL
Run Code Online (Sandbox Code Playgroud)

谢谢.

Flo*_*ita 7

这将在逻辑上符合您的要求:

SELECT * 
FROM [Stuff] s
WHERE 
 DeletedBy IS NULL 
 and (@Condition = 0 or s.EntityCode in (select E.code from #Entitye))
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这是意图.当`@Condition = 1`时,结果应该包含`#Entity`表中的列,不应该吗?我想你已经假设OP的代码是`SELECT s.*FROM [Stuff] s ...` (3认同)