Автоматически столбцы соответствия в INSERT INTO … ВЫБИРАЮТ … ИЗ

Попытайтесь думать о конечных целях своего пользователя сначала прежде, чем решить, какие отдельные задачи они выполнили бы при использовании программного обеспечения. Книга О Поверхности имеет превосходные обсуждения этого вида вещи и хотя довольно долго очень интересно и проницателен. Интересно отметить, сколькими из их предложений об улучшении разработки программного обеспечения кажутся используемому в документах Google...

Еще одна вещь, сохраните свой пользовательский интерфейс максимально простым и уберите.

13
задан Travis Heseman 2 December 2009 в 22:18
поделиться

5 ответов

Если T1 и T2 точно совпадают, у вас есть два варианта. Вы можете выбрать все столбцы из T2 для вставки в T1 , либо вы можете предоставить список столбцов для оператора insert .

Даже если при выполнении select MSSQL предоставляет заголовки столбцов, эта информация не используется оператором insert для сопоставления столбцов.

3
ответ дан 1 December 2019 в 19:15
поделиться

Всегда используйте явные столбцы как в проекции INSERT, так и в проекции SELECT. Даже если вы этого не хотите, вам следует:

INSERT INTO T1 (C1, c2)
SELECT C1, C2 FROM T2
20
ответ дан 1 December 2019 в 19:15
поделиться

Why not simply

INSERT INTO t1
SELECT * FROM T2
1
ответ дан 1 December 2019 в 19:15
поделиться

Если вас беспокоит столбец имена, которые вы всегда можете присвоить им псевдонимом:

INSERT INTO T1 (C1, c2)
SELECT C1 AS C1_ALIAS, C2 AS C2_ALIAS FROM T2

Или, более кратко:

INSERT INTO T1 (C1, c2)
SELECT C1 C1_ALIAS, C2 C2_ALIAS FROM T2

Хотя я действительно не могу понять, зачем кому-то это нужно в таком простом примере

0
ответ дан 1 December 2019 в 19:15
поделиться

Да, вы можете опустить имена полей для таблицы, в которую вы вставляете, и вы можете использовать select *, чтобы получить все поля из таблицы, но я бы не рекомендовал этот подход.

Если вы опустите имя поля, поля будут сопоставлены по положению, а не по имени. Если поля расположены не в одном и том же порядке, они будут перепутаны. Как правило, не следует полагаться на точный макет таблиц, чтобы минимизировать риск того, что изменения в таблицах нарушат запросы.

14
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: