Имя столбца или количество предоставленных значений не соответствует определению таблицы без удаления таблицы - PullRequest
0 голосов
/ 20 июля 2009

На сервере SQL я пытаюсь вставить значения из одной таблицы в другую, используя следующий запрос:

insert into tblTable1 (
  [Week],
  20001,
  20002,
  20003,
  20004,
  20006,
  20005,
  W/c
)
select *
from tblTable1_link (
  [Week],
  20001,
  20002,
  20003,
  20004,
  20006,
  20005,
  W/c
)

Я получаю следующую ошибку:

Сервер: Msg 170, уровень 15, состояние 1, строка 1
Строка 1: неправильный синтаксис около '20001'.
Сервер: Msg 170, уровень 15, состояние 1, строка 1
Строка 1: неверный синтаксис рядом с неделей.

Я уверен, что обе таблицы имеют одинаковую структуру, имена столбцов и одинаковый тип данных:

Please see the structure below:

sp_columns tblTable1_link

database_name   USERACCOUNT tblTable1   Week    4   int 10  4   0   10  1   NULL    NULL    4   NULL    NULL    1   YES 38
database_name   USERACCOUNT tblTable1   20001   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 2   YES 39
database_name   USERACCOUNT tblTable1   20002   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 3   YES 39
database_name   USERACCOUNT tblTable1   20003   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 4   YES 39
database_name   USERACCOUNT tblTable1   20004   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 5   YES 39
database_name   USERACCOUNT tblTable1   20006   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 6   YES 39
database_name   USERACCOUNT tblTable1   20005   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 7   YES 39
database_name   USERACCOUNT tblTable1   W/c 11  smalldatetime   16  16  0   NULL    1   NULL    NULL    9   3   NULL    8   YES 111

database_name   dbo tblTable1_Link  Week    4   int 10  4   0   10  1   NULL    NULL    4   NULL    NULL    1   YES 38
database_name   dbo tblTable1_Link  20001   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 2   YES 39
database_name   dbo tblTable1_Link  20002   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 3   YES 39
database_name   dbo tblTable1_Link  20003   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 4   YES 39
database_name   dbo tblTable1_Link  20004   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 5   YES 39
database_name   dbo tblTable1_Link  20006   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 6   YES 39
database_name   dbo tblTable1_Link  20005   -9  nvarchar    255 510 NULL    NULL    1   NULL    NULL    -9  NULL    510 7   YES 39
database_name   dbo tblTable1_Link  W/c 11  smalldatetime   16  16  0   NULL    1   NULL    NULL    9   3   NULL    8   YES 111

Я не могу удалить исходную таблицу, я хочу вставить данные без удаления

В результате запроса:

выбрать * в таблицу tblTable_Link

Ошибка:

Сервер: сообщение 2714, уровень 16, состояние 6, строка 1 В базе данных уже есть объект с именем tblTable.

Ответы [ 2 ]

2 голосов
/ 20 июля 2009
insert into tblTable1(
[Week]
,[20001]
,[20002]
,[20003]
,[20004]
,[20006]
,[20005]
,[W/c])
select [Week]
,[20001]
,[20002]
,[20003]
,[20004]
,[20006]
,[20005]
,[W/c]
 from tblTable1_link

Raj

2 голосов
/ 20 июля 2009

Вы должны ссылаться на имена столбцов, которые являются числами в скобках:

INSERT INTO tblTable1 (
  [Week],
  [20001],
  [20002],
  [20003], 
  etc

Кроме того, вы не должны использовать SELECT * в подзапросе для оператора вставки. Перечислите столбцы, чтобы убедиться, что они в правильном порядке для вставки.

Кроме того, я понятия не имею, чего вы пытаетесь достичь с помощью части "FROM tblTable_Link ([Week],etc". Это недопустимый синтаксис SQL. Если вы пытаетесь выбрать только те столбцы из таблицы, они идут после ключевого слова SELECT и перед ключевым словом FROM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...