我试图将数据从另一个表中插入一个表
INSERT INTO test(CRED_NUMERO, GRP_NUMERO, ARE_NUMERO, CRACTI_NUMERO, CRAC_DIFPORGRUPO,
JORN_NUMERO, TURN_NUMERO, CRAC_QTDTOTALACESSOS, CRAC_QTDACESSOS, CRAC_VERFSENHA,
CRAC_VERFDIGITAL, CRAC_ULTPASSAGEM, CRAC_ULTPASSAGEMPONTO)
VALUES ((SELECT PES_NUMERO FROM PESSOAS WHERE PES_NUMERO NOT IN (SELECT CRED_NUMERO
FROM CRED_ACESSO)),'1', '1', '1', NULL,NULL,NULL,'999', '0', '0', '0',
'2016-08-20 20:02:00.000','2000-01-01 00:00:00.000')
但是,在运行查询时,会显示以下错误
"子查询返回的值超过1。这是不允许的 子查询跟随=,!=,<,< =,>,> =或当子查询用作 一个表达。"
我之前已经阅读了有关同一错误的问题,建议使用" IN"而不是" ="但是,选择查询具有NOT IN。你能帮帮我吗? 提前谢谢。
答案 0 :(得分:4)
而不是insert . . . values
,使用insert . . select
:
INSERT . . .
SELECT PES_NUMERO, ,'1', '1', '1', NULL, NULL, NULL, '999', '0', '0', '0',
'2016-08-20 20:02:00.000', '2000-01-01 00:00:00.000'
FROM PESSOAS
WHERE PES_NUMERO NOT IN (SELECT CRED_NUMERO FROM CRED_ACESSO);
注意:我强烈建议您使用NOT EXISTS
而不是NOT IN
。如果NOT IN
永远CRED_NUMERO
,则NULL
不会返回任何行。以下只是一个好习惯,所以你永远不会遇到这个问题:
INSERT . . .
SELECT pPES_NUMERO, ,'1', '1', '1', NULL, NULL, NULL, '999', '0', '0', '0',
'2016-08-20 20:02:00.000', '2000-01-01 00:00:00.000'
FROM PESSOAS p
WHERE NOT EXISTS (SELECT 1 CRED_ACESSO ca WHERE p.PES_NUMERO = ca.CRED_NUMERO);