Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取错误:子查询返回的值超过1_Sql_Sql Server 2008 - Fatal编程技术网

Sql 获取错误:子查询返回的值超过1

Sql 获取错误:子查询返回的值超过1,sql,sql-server-2008,Sql,Sql Server 2008,下面是我的SQL查询 BEGIN TRAN DECLARE @PRE_CD INT = (SELECT ISNULL(MAX(PRE_CD), 0) FROM TBL_MAIN) INSERT INTO TBL_MAIN (PRE_CD, PRE_DESC, PRE_REF_CD) SELECT ROW_NUMBER() OVER (ORDER BY PRESENTATION) + @PRE_CD,

下面是我的SQL查询

BEGIN TRAN

DECLARE @PRE_CD INT = (SELECT ISNULL(MAX(PRE_CD), 0) FROM  TBL_MAIN)

INSERT INTO TBL_MAIN
            (PRE_CD,
             PRE_DESC,
             PRE_REF_CD)
SELECT ROW_NUMBER() OVER (ORDER BY PRESENTATION) + @PRE_CD,
       PRESENTATION,
       3
FROM   (SELECT DISTINCT PRESENTATION
        FROM   Temp_Data
        WHERE  PRESENTATION NOT IN (SELECT PRE_DESC
                                    FROM   TBL_MAIN)) T

COMMIT; 
在执行这个查询时,我得到了一个错误


子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。

我看不出代码会直接导致它


可能您的表上有一个错误的INSERT触发器,它假定INSERTED将只包含一行,而对于多行插入则失败。

只需确保选择ISNULLMAXPRE\u CD,TBL_MAIN中的0不返回多行它只返回1行,因为上面的错误仅仅意味着您试图将多个值分配给只接受一行的某个查询或变量value@DharaShah-它不能返回多行。没有GROUP BY的聚合总是返回单行结果。为什么PRE_CD不是标识列?