在访问中我这样做:
insert into accounts_changes
(select *
from accounts
where [Agency Code]
in (select * from tableimport))
它说它不喜欢这个INSERT语句
更新
sSql = "insert into accounts_changes (select * from Accounts where [Agency Code] in (select [Agency Code] from tableimport))"
我做了什么标记说它仍然给我相同的错误信息
syntax error in INSERT INTO statement
当我这样做时:
ssql = "select [Agency Code] from tableimport"
CurrentDb.Execute ssql
它说无法执行SELECT QUERY
答案 0 :(得分:14)
这是错误的:
select *
from accounts
where [Agency Code] in (select * from tableimport)
您只能在子查询中为IN子句选择一列。你想要这样的东西:
select *
from accounts
where [Agency Code] in (select [Agency Code] from tableimport)
您需要检查表tableimport
中列的确切名称。以上只是我最好的猜测。
答案 1 :(得分:3)
您可能需要从tableimport而不是*。
中选择代理商代码答案 2 :(得分:2)
您应该在tableimport
内部选择
此外,您可以声明要插入的表的字段和返回的字段:
INSERT INTO TABLE_EXAMPLE (A, B) SELECT AA, BB FROM TABLE_ORIGIN
答案 3 :(得分:2)
这部分可能误导了你:
ssql = "select [AgencyCode] from tableimport"
CurrentDb.Execute ssql
执行需要“操作”查询(INSERT,DELETE,UPDATE或SELECT INTO)。当您给执行一个普通(行返回)SELECT查询时,您将始终收到错误#3065,“无法执行选择查询”。这并不意味着您的SELECT语句有任何问题。通过将SELECT语句粘贴到新查询的SQL视图中来测试它。
您展示了[AgencyCode]的两个变体...一个与代理和代码之间没有空格。这是什么?
我认为你原来的INSERT语句有一对额外的括号,不需要。试试这种方式:
insert into accounts_changes
select *
from Accounts
where [Agency Code] in (
select [Agency Code] from tableimport)
如果仍然失败,请验证您具有相同数量的字段,并在Accounts和accounts_changes中使用相同的字段名称和数据类型。如果两个表中的字段不完全匹配,请在@pcent显示时明确列出字段。
答案 4 :(得分:-2)
这有效:
insert into accounts_changes select * from Accounts where [Agency Code] in (select [Agency Code] from tableimport)