SQL存储过程WHERE项不在表中

use*_*331 1 sql t-sql sql-server stored-procedures

我有一张像这样的桌子:

DECLARE @deadCommunityList TABLE (community VARCHAR(12))
INSERT INTO @deadCommunityList (community)
VALUES ('000')
    , ('253'), ('COU'), ('COV')
    , ('D2T'), ('D3T'), ('DEW')
    , ('DIT'), ('E2T'), ('E3T')
    , ('EL2'), ('EL3'), ('ELC')
    , ('ELI'), ('ELT'), ('ERI')
    , ('FA1'), ('GRA'), ('GRD')
    , ('GRT'), ('HIG'), ('HIP')
    , ('LYN'), ('NEW'), ('PAR')
    , ('PMT'), ('RDT'), ('RES')
    , ('SCR'), ('SCT'), ('SMT')
    , ('SUM'), ('TB'), ('W2T')
    , ('WDV'), ('WE2'), ('WIC')
    , ('WEC'), ('WIL'), ('ZIT')
Run Code Online (Sandbox Code Playgroud)

现在我有这样的查询:

SELECT DISTINCT AREA_DESC
FROM V_CONSTAT_PROJ_DATES
WHERE AREA_ID NOT IN @deadCommunityList
ORDER BY AREA_DESC
Run Code Online (Sandbox Code Playgroud)

我想说的是给我结果,其中AREA_ID不在表中....这不起作用,我得到以下错误:

必须声明标量变量"@deadCommunityList".

我究竟做错了什么?

Gio*_*sos 5

试试这个:

SELECT DISTINCT AREA_DESC 
FROM V_CONSTAT_PROJ_DATES 
WHERE AREA_ID NOT IN (SELECT community FROM @deadCommunityList)
ORDER BY AREA_DESC
Run Code Online (Sandbox Code Playgroud)

@deadCommunityList是一个变量,所以你必须SELECT从它的值.