子查询返回多个结果

时间:2020-03-04 22:33:05

标签: sql sql-server

我对SQL还是很陌生,最近创建的存储过程一直告诉我,子查询返回的结果不止一个,但我不知道是哪个问题。如果有人有时间可以告诉我我所缺少的内容,我将不胜感激!

谢谢!

SELECT  DISTINCT a.customer_no [id],
        x.esal1_desc [constituent],
        a.perf [activity],
        a.sp_act_dt [activity_date],
        c.description[activity_type],
        d.display_name_tiny [solicitor],
        s.description [status],
        ISNULL(a.num_attendees,0)[attending],
        a.notes [notes],
        e.address [email]
FROM   [dbo].t_special_activity a
        left outer join [dbo].tr_special_activity_status s ON s.id = a.status
        left outer join [dbo].tr_special_activity c ON c.id = a.sp_act
        left outer JOIN [dbo].FT_CONSTITUENT_DISPLAY_NAME() d ON a.worker_customer_no = d.customer_no
        left outer JOIN [dbo].T_EADDRESS e on a.customer_no=e.customer_no and primary_ind='Y'
        left outer JOIN [dbo].TX_CUST_SAL x on a.customer_no=x.customer_no and default_ind='Y'
WHERE a.status IN (ISNULL(@status, (SELECT DISTINCT id FROM TR_SPECIAL_ACTIVITY_STATUS)))  
    AND a.sp_act_dt BETWEEN (ISNULL(@activity_start,(SELECT MIN(sp_act_dt) FROM T_SPECIAL_ACTIVITY))) 
        AND (ISNULL(@activity_end,(SELECT MAX(sp_act_dt) FROM T_SPECIAL_ACTIVITY)))
    AND ((ISNULL(@list,0) = 0) OR EXISTS (SELECT customer_no FROM T_LIST_CONTENTS lc WITH (NOLOCK)
        WHERE a.customer_no = lc.customer_no and lc.list_no = @list))

1 个答案:

答案 0 :(得分:2)

A,您不能使用此表达式:

bind(this)

子查询位于期望单个值的位置。无论如何,我认为您想要:

this.setState

请注意,reader.onloadthis子句无关。充其量,它什么也没做。最糟糕的是,它会阻碍优化器。

我意识到这有点令人困惑。您以为this.state需要一个列表-该列表甚至可能是子查询。但是,列表的元素是标量而不是 lists 。因此,当子查询是列表的 时,则假定它是单个值。