Chris Slinko Ответов: 1

Msg 156, уровень 15, состояние 1, строка 23 неверный синтаксис рядом с ключевым словом "from".


У меня есть запрос. Что я получаю сообщение об ошибке "Msg 156, Уровень 15, состояние 1, строка 23
Неверный синтаксис рядом с ключевым словом" FROM". " он указывает на запрос "из [TOMSQLVISION].[VISION_2020].[REAL_PROP].[VW_HSALE]." Этот запрос извлекает данные из 1 sql server и создает таблицу на другом sql server. Затем заполняет веб-страницу.


  1  DROP TABLE [dbo].[VISION_SALEHIST4]
  2  SELECT 
  3  
  4    MNC,
  5    PID,
  6    LINE_NUM,
  7    BOOK_PG,
  8    CONVERT(datetime, SALEDATE) AS SALEDATE,
  9    SALEPRICE,
 10    CERTIFICATE,
 11    INSTRUMENT,
 12    QUALIFIED,
 13    OWN_NAME,
 14    CO_OWN_NAME,
 15    ADDRESS1,
 16    ADDRESS2,
 17    CITY,
 18    STATE,
 19    ZIP
 20    
 21  INSERT INTO [dbo].[VISION_SALEHIST4]
 22   
 23    FROM [TOMSQLVISION].[VISION_2020].[REAL_PROP].[VW_HSALE]


Что я уже пробовал:

Я подключен к другому серверу tomsqlvision. Таблица, из которой запрос извлекает данные, является таблицей представления. Будет ли это иметь значение?

Спасибо за помощь.

0x01AA

Думать о INSERT INTO <table> (<columns>) SELECT <columns> ... FROM ...

Читать это: SQL INSERT INTO оператор[^]

0x01AA

Читать это: SQL INSERT INTO оператор[^]

0x01AA

Извините какой-то Интер...что угодно... я имею в виду что-то вроде
INSERT INTO [dbo].[VISION_SALEHIST4] (<columns>) SELECT <columns> FROM [TOMSQLVISION].[VISION_2020].[REAL_PROP].[VW_HSALE]

[Редактировать]
И DROP TABLE [dbo].[VISION_SALEHIST4]это плохая идея без того, чтобы создать его снова, прежде чем пытаться вставить.

Либо вы создаете таблицу снова, либо вместо того, чтобы отбросить таблицу, вы делаете это
DELETE FROM [dbo].[VISION_SALEHIST4]

Jassom

Сначала вы уронили таблицу ... а потом как бы вы вставили значения в уроненную таблицу???

0x01AA

Да ;)

Jassom

Удалить из [dbo].[VISION_SALEHIST4]
ГО

Вставить в [dbo].[VISION_SALEHIST4] ВЫБЕРИТЕ * ИЗ [TOMSQLVISION].[VISION_2020].[REAL_PROP].[VW_HSALE]
ГО

Примечание: это должны быть обе таблицы с одинаковыми столбцами и одинаковым порядком.

0x01AA

Цитата: "Примечание: обе таблицы должны иметь одинаковые столбцы и одинаковый порядок."
И да, и нет. Пока вы указываете каждый столбец для INSERT и (в том же порядке) для SELECT, по крайней мере, имена столбцов могут быть разными.
Напр.
INSERT INTO TBl1(col1, col2) SELECT(ColA, ColB) FROM TBl2
будет работать.

.. и, конечно же, типы столбцов должны совпадать.

Jassom

Да, в случае, если вы не будете использовать ( * ), вы можете выбрать конкретные столбцы, как вы сказали.

0x01AA

... что является обязательным в случае, если имена столбцов не совпадают ;)

Jassom

не имеет значения, если имена столбцов не совпадают.
В случае, если вы решите использовать ( * ), только то, что должно соответствовать этим ниже:
1 - тип колонок.
2 - количество колонок.

но имена столбцов не имеют значения

0x01AA

нет

Jassom

Я попробовал.

1 Ответов

Рейтинг:
2

Jassom

Вы можете найти то, что вам нужно, по ссылке ниже:

sql - INSERT INTO from two different server database - переполнение стека[^]


попробовать это.