Sql 获取错误:子查询返回的值超过1
下面是我的SQL查询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,
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不是标识列?