Я пытаюсь вставить все значения одной таблицы в другую. Но оператор insert принимает значения, но я бы хотел, чтобы он принял select * из initial_Table. Возможно ли это?
Вставить все значения таблицы в другую таблицу в SQL
Ответ 1
Оператор insert фактически имеет синтаксис для этого. Это намного проще, если вы укажете имена столбцов, а не выберите "*", хотя:
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Лучше прояснить это, потому что почему-то этот пост получает несколько голосов.
Синтаксис INSERT INTO... SELECT FROM - это когда таблица, в которую вы вставляете ( "new_table" в моем примере выше) уже существует. Как говорили другие, синтаксис SELECT... INTO предназначен для того, чтобы создать новую таблицу как часть команды.
Вы не указали, должна ли новая таблица быть создана как часть команды, поэтому INSERT INTO... SELECT FROM должно быть хорошо, если ваша таблица назначения уже существует.
Ответ 2
Попробуйте следующее:
INSERT INTO newTable SELECT * FROM initial_Table
Ответ 3
Вы можете вставить, используя Sub-запрос, следующим образом:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
Ответ 4
От здесь:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Ответ 5
Вы можете использовать оператор select into
. Подробнее о W3Schools.
Ответ 6
Если вы переносите много данных навсегда, то есть не заполняете временную таблицу, я бы рекомендовал использовать Экспорт/Экспорт данных SQL Server для сопоставлений таблицы-таблицы.
Инструмент импорта/экспорта обычно лучше, чем прямой SQL, когда у вас есть преобразования типов и возможное усечение значения в вашем сопоставлении. Как правило, чем сложнее ваше сопоставление, тем продуктивнее вы используете инструмент ETL, такой как Integration Services (SSIS) вместо прямого SQL.
Инструмент импорта/экспорта на самом деле является мастером SSIS, и вы можете сохранить свою работу как пакет dtsx.
Ответ 7
Существует более простой способ, при котором вам не нужно вводить код (идеально подходит для тестирования или одноразовых обновлений):
Шаг 1
- Щелкните правой кнопкой мыши по таблице в проводнике и выберите "Изменить верхние 100 строк";
Шаг 2
- Затем вы можете выбрать нужные строки (Ctrl + Click или Ctrl + A) и Щелкните правой кнопкой мыши и скопируйте ( Примечание. Если вы хотите добавить условие "where", щелкните правой кнопкой мыши по сетке → панель → SQL Теперь вы можете отредактировать Query и добавить условие WHERE, затем щелкните правой кнопкой мыши еще раз → Execute SQL, ваши нужные строки будут доступны для выбора внизу)
Шаг 3
- Следуйте шагу 1 для целевой таблицы.
Шаг 4
- Теперь перейдите в конец сетки, и последняя строка будет иметь звездочку (*) в первом столбце (эта строка должна добавить новую запись). Нажмите на это, чтобы выбрать эту целую строку, а затем PASTE (Ctrl + V). Ячейка может иметь красную звездочку (указывающую, что она не сохраняется).
Шаг 5
- Нажмите любую другую строку, чтобы запустить инструкцию insert (красный Asterix исчезнет)
Примечание. 1. Если столбцы находятся не в правильном порядке, как в таблице Target, вы всегда можете выполнить шаг 2 и выбрать столбцы в том же порядке, что и в таблице Target
Примечание - 2. Если у вас есть столбцы Identity, выполните SET IDENTITY_INSERT sometableWithIdentity ON
, а затем выполните приведенные выше шаги и в конце выполните SET IDENTITY_INSERT sometableWithIdentity OFF
Ответ 8
Я думаю, что это утверждение может делать то, что вы хотите.
INSERT INTO newTableName (SELECT column1, column2, column3 FROM oldTable);
Ответ 9
insert into stock_take_item_copy (stock_take_id, item_id) select stock_take_id, item_id from mymissingdata
Почему я получил #1062 - Duplicate entry '20239' for key 'PRIMARY'
?
как изменить первичный ключ в таблице?
Ответ 10
Dim ofd As New OpenFileDialog
ofd.Filter = "*.mdb|*.MDB"
ofd.FilterIndex = (2)
ofd.FileName = "bd1.mdb"
ofd.Title = "SELECCIONE LA BASE DE DATOS ORIGEN (bd1.mdb)"
ofd.ShowDialog()
Dim conexion1 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd.FileName
Dim conn As New OdbcConnection()
conn.ConnectionString = conexion1
conn.Open()
'EN ESTE CODIGO SOLO SE AGREGAN LOS DATOS'
Dim ofd2 As New OpenFileDialog
ofd2.Filter = "*.mdb|*.MDB"
ofd2.FilterIndex = (2)
ofd2.FileName = "bd1.mdb"
ofd2.Title = "SELECCIONE LA BASE DE DATOS DESTINO (bd1.mdb)"
ofd2.ShowDialog()
Dim conexion2 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd2.FileName
Dim conn2 As New OdbcConnection()
conn2.ConnectionString = conexion2
Dim cmd2 As New OdbcCommand
Dim CADENA2 As String
CADENA2 = "INSERT INTO EXISTENCIA IN '" + ofd2.FileName + "' SELECT * FROM EXISTENCIA IN '" + ofd.FileName + "'"
cmd2.CommandText = CADENA2
cmd2.Connection = conn2
conn2.Open()
Dim dA2 As New OdbcDataAdapter
dA2.SelectCommand = cmd2
Dim midataset2 As New DataSet
dA2.Fill(midataset2, "EXISTENCIA")