SSLHandshakeException может быть разрешен двумя способами.
Попытка:
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
Это - стандартный ANSI SQL и должно работать над любым DBMS
, на который Он определенно работает:
Shadow_x99: Это должно хорошо работать, и у Вас может также быть несколько столбцов и другие данные также:
INSERT INTO table1 ( column1, column2, someInt, someVarChar )
SELECT table2.column1, table2.column2, 8, 'some string etc.'
FROM table2
WHERE table2.ID = 7;
Редактирование: Я должен упомянуть, что только использовал этот синтаксис с Доступом, SQL 2000/2005/Express, MySQL и PostgreSQL, таким образом, те должны быть покрыты. Комментатор указал, что это будет работать с SQLite3.
Оба ответы, которые я вижу, хорошо работают в Informix и являются в основном стандартным SQL. Таким образом, нотация:
INSERT INTO target_table[(<column-list>)] SELECT ... FROM ...;
хорошо работает с Informix и, я ожидал бы, весь DBMS. (Однажды на 5 или больше лет назад, это - вид вещи, которую не всегда поддерживал MySQL; это теперь имеет достойную поддержку этого вида стандартного синтаксиса SQL и, AFAIK, это работало бы хорошо над этой нотацией.) Список столбцов является дополнительным, но указывает на целевые столбцы в последовательности, таким образом, первый столбец результата ВЫБОРА войдет в первый перечисленный столбец, и т.д. В отсутствие списка столбцов, первый столбец результата ВЫБОРА входит в первый столбец целевой таблицы.
то, Что может отличаться между системами, является нотацией, используемой для идентификации таблиц в различных базах данных - стандарт не имеет ничего для высказывания о межбазе данных (уже не говоря о меж-DBMS) операций. С Informix можно использовать следующую нотацию для идентификации таблицы:
[dbase[@server]:][owner.]table
таким образом, можно определить базу данных, дополнительно определив сервер, который размещает ту базу данных, если это не находится в текущем сервере, сопровождаемом дополнительным владельцем, точкой, и наконец фактическим именем таблицы. Стандарт SQL использует термин схема для того, что Informix вызывает владельцем. Таким образом, в Informix, любая из следующих нотаций могла определить таблицу:
table
"owner".table
dbase:table
dbase:owner.table
dbase@server:table
dbase@server:owner.table
владелец в целом не должен быть заключен в кавычки; однако при использовании кавычек необходимо было записать имя владельца правильно - это становится чувствительным к регистру. Это:
someone.table
"someone".table
SOMEONE.table
все определяют ту же таблицу. С Informix существует умеренная сложность с базами данных MODE ANSI, где имена владельца обычно преобразовываются в верхний регистр (informix, исключение). Таким образом, в базе данных MODE ANSI (не наиболее часто используемый), Вы могли записать:
CREATE TABLE someone.table ( ... )
и имя владельца в системном каталоге был бы "КТО-ТО", а не 'кто-то'. При включении имени владельца в двойные кавычки оно действует как выделенный идентификатор. Со стандартным SQL выделенные идентификаторы могут использоваться много мест. С Informix можно использовать их только вокруг имен владельца - в других контекстах, Informix рассматривает и единственно заключенные в кавычки и дважды заключенные в кавычки строки как строки, вместо того, чтобы разделить единственно заключенные в кавычки строки как строки и дважды заключенные в кавычки строки как выделенные идентификаторы. (Конечно, только для полноты, существует переменная среды, DELIMIDENT, который может быть установлен - на любое значение, но Y является самым безопасным - указать, что двойные кавычки всегда окружают выделенные идентификаторы, и одинарные кавычки всегда окружают строки.)
Примечание, которое SQL Server MS удается использовать [выделенные идентификаторы], включенные в квадратные скобки. Это выглядит странным мне и является, конечно, не частью стандарта SQL.
В informix это работает, как сказал Claude:
INSERT INTO table (column1, column2)
VALUES (value1, value2);