首页 > 解决方案 > 仅当临时表有值时才使用内连接

问题描述

我有动态查询,首先我创建一个临时表,然后填充它:

CREATE TABLE [#SearchKeys] ([DesignKey] INT);

INSERT INTO [#SearchKeys]
    SELECT
        [pd].[DesignKey]
    FROM 
        [Project] AS [p]
    ....

一旦有了数据,我就将其用于动态查询的 INNER JOIN 部分,例如:

INNER JOIN 
    (SELECT DesignKey FROM #SearchKeys) AS [S] ON [S].[DesignKey] = [PD].[DesignKey]

问题是我只想INNER JOIN在临时表有值的情况下添加它,如果不只是不执行它。我怎样才能做到这一点?问候

标签: sqlsql-servertsql

解决方案


我没有从您的问题中看到动态查询。但我只是在这里给你伪代码

--Check for If Data Exist in #SearchKeys
IF Exists (SELECT 1 FROM #SearchKeys)--Condition to check value available in temp table
BEGIN
   --without INNER JOIN Query
END
ELSE
BEGIN
   -- with INNER JOIN Query
   INNER JOIN (SELECT DesignKey FROM #SearchKeys) AS [S] ON [S].[DesignKey] = [PD].[DesignKey]
END

推荐阅读