由于错误,SQL查询无法正常工作

时间:2014-04-10 08:57:39

标签: c# asp.net sql sql-server

我正在尝试使用内部SQL命令查询表并使用结果查询另一个但是我遇到了以下问题

" Msg 137,Level 16,State 1,Line 10 必须声明标量变量" @ ListofPropIDs"。"

任何帮助将不胜感激

DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO         @ListofPropIDs 
SELECT              Id 
FROM                Property
WHERE               CreatedBy = 'oliver@test.co.uk' 

SELECT          
    COUNT           (Digits)
    FROM            dbo.CallInfo
    WHERE           Digits = @ListofPropIDs; 

GO

4 个答案:

答案 0 :(得分:1)

DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO         @ListofPropIDs 
SELECT              Id 
FROM                Property
WHERE               CreatedBy = 'oliver@test.co.uk' 

SELECT          
    COUNT           (Digits)
    FROM            dbo.CallInfo C
    INNER JOIN @ListofPropIDs s
    on s.IDs = c.Digits

答案 1 :(得分:0)

不知道你想要达到什么目标,这样的事情应该有效,但可能不正确:

DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO         @ListofPropIDs 
SELECT              Id 
FROM                Property
WHERE               CreatedBy = 'oliver@test.co.uk' 

SELECT          
    COUNT           (Digits)
    FROM            dbo.CallInfo
    WHERE           Digits in (SELECT IDs FROM @ListofPropIDs) 

您的原始查询正在尝试将表变量用作where子句的一部分,就好像它是一个不正确的列。

答案 2 :(得分:0)

@ListofPropIDs是一个表,你就像使用它一样使用它。

使用:

SELECT          
    COUNT           (Digits)
    FROM            dbo.CallInfo
    WHERE           Digits IN ( SELECT IDs from @ListofPropIDs)

GO

答案 3 :(得分:0)

您不能将表格用作条件值

相反,您可以使用SQL: IN Condition

SELECT          COUNT (Digits)
FROM            dbo.CallInfo
WHERE           Digits IN (Select Id  From  @ListofPropIDs)

或使用Inner Join

  SELECT          COUNT (Digits)
  FROM            dbo.CallInfo C
                  Inner Join @ListofPropIDs T On T.Id=C.Digits