T-SQL关于内部联接表变量的问题

Ton*_*ony 0 t-sql

在我的存储过程中,我有一个表变量包含行ID.有两种情况 - 表变量是空的而不是.

declare @IDTable as table
(
  number NUMERIC(18,0)
)
Run Code Online (Sandbox Code Playgroud)

在主查询中,我加入了该表:

inner join @IDTable tab on (tab.number = csr.id)
Run Code Online (Sandbox Code Playgroud)

但:

因为我们知道内连接如何工作,我需要我的查询返回一些行:

当@IDTable为空时

要么

返回@IDTable中存在的行

我也试过LEFT加入,但它不起作用.任何想法如何解决?

cod*_*ger 5

如果`@IDTable'为空,那么你返回哪些行?你只是忽略了加入桌面吗?

我不确定我会得到你想要做的但是这可能会更容易.

if (Select Count(*) From @IDTable) == 0
    begin
    -- do a SELECT that doesn't join on to the @IDTable

     end
else
    begin
    -- do a SELECT that joins on to @IDTable
    end
Run Code Online (Sandbox Code Playgroud)