что не так с этим оператором sql? - PullRequest
3 голосов
/ 08 июня 2010

в доступе я делаю это:

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

он говорит, что НЕ МОЖЕТ ВЫПОЛНИТЬ ВЫБРАТЬ ЗАП *

Ответы [ 5 ]

14 голосов
/ 08 июня 2010

Это неправильно:

select *
from accounts
where [Agency Code] in (select * from tableimport)

Вы можете выбрать только один столбец в подзапросе для предложения IN.Вы хотите что-то вроде этого:

select *
from accounts
where [Agency Code] in (select [Agency Code] from tableimport)

Вам необходимо проверить точное имя столбца в таблице tableimport.Вышесказанное - только мое лучшее предположение.

3 голосов
/ 08 июня 2010

Возможно, вам нужно выбрать код агентства из таблицы import вместо *.

2 голосов
/ 08 июня 2010

Эта часть могла ввести вас в заблуждение:

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, так и account_changes. Если поля в этих двух таблицах не совпадают точно, перечислите поля явно, как показывал @pcent.

2 голосов
/ 08 июня 2010

Вы должны указать столбец, который вы хотите искать в tableimport Внутренний выбор.

Также вы можете объявить поля вставляемой таблицы и возвращаемые поля:

INSERT INTO TABLE_EXAMPLE (A, B) SELECT AA, BB FROM TABLE_ORIGIN
0 голосов
/ 08 июня 2010

это сработало:

insert into accounts_changes select * from Accounts where [Agency Code] in (select [Agency Code] from tableimport)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...