Sql 从表中插入,其中SEQ_NUM<&燃气轮机;2.
我试图从临时表中的数据插入下表Sql 从表中插入,其中SEQ_NUM<&燃气轮机;2.,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我试图从临时表中的数据插入下表PS_VNDR_ADDR_SCROL,该临时表中尚未插入一行PS_VNDR_ADDR_SCROL,对于相同的供应商ID,该行的SEQ NUM等于2 下面的SQL运行但不插入任何行,我知道应该有132条记录满足此条件 INSERT PS_VNDR_ADDR_SCROL SELECT 'SHARE', A.VENDOR_ID, 2, 'HOME', 'BUSN', '' FROM #DepWork2 A WHERE NOT EXISTS ( SELECT VE
PS_VNDR_ADDR_SCROL
,该临时表中尚未插入一行PS_VNDR_ADDR_SCROL
,对于相同的供应商ID
,该行的SEQ NUM
等于2
下面的SQL运行但不插入任何行,我知道应该有132条记录满足此条件
INSERT PS_VNDR_ADDR_SCROL
SELECT 'SHARE', A.VENDOR_ID, 2, 'HOME', 'BUSN', ''
FROM #DepWork2 A
WHERE NOT EXISTS (
SELECT VENDOR_ID
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM <> 2
)
尝试使用现有的
INSERT PS_VNDR_ADDR_SCROL
SELECT 'SHARE', A.VENDOR_ID, 2, 'HOME', 'BUSN', ''
FROM #DepWork2 A
WHERE EXISTS (SELECT 1 FROM PS_VNDR_ADDR_SCROL B WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM = 2)
在下表中插入PS\u VNDR\u ADDR\u SCROL
[…],其中表[…]中已有一行PS\u VNDR\u ADDR\u SCROL
对于相同的供应商ID,其序号
等于2
您使用NOT EXISTS
的方法看起来不错,但是我认为,为了符合您的规范,相关子查询应该拼写为:
SELECT VENDOR_ID
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM = 2
而不是:
SELECT VENDOR_ID
FROM PS_VNDR_ADDR_SCROL B
WHERE B.VENDOR_ID = A.VENDOR_ID AND SEQ_NUM <> 2
注意:第二个查询中的语法错误来自这部分SQL代码:
...
WHERE NOT IN (
SELECT VENDOR_ID
...
)
您需要在的左侧指定一列,该列不处于状态。这可能是:
...
WHERE A.VENDOR_ID NOT IN (
SELECT VENDOR_ID
...
)
注意:当然,第二个查询也应该有条件SEQ_NUM=2
,而不是相关子查询中的SEQ_NUM 2
。如果我将其更改为WHERE EXISTS
,则会出现重复的键插入错误。使用NOT EXISTS
和SEQ_NBR=2
按预期工作,谢谢。
...
WHERE NOT IN (
SELECT VENDOR_ID
...
)
...
WHERE A.VENDOR_ID NOT IN (
SELECT VENDOR_ID
...
)