Выполнение JOIN между таблицей H2 и ResultSet (выберите из таблицы MySQL) - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужна база данных, база данных MySQL и база данных H2, встроенная в мое приложение Java.

Я хочу CREATE TABLE для базы данных H2, соединяющей таблицу H2 и ResultSet, то есть SELECTиз базы данных MySQL.

Я хочу выполнить этот запрос к базе данных H2.

CREATE TABLE TableName AS
  SELECT l.*, m.Act FROM temp AS l JOIN
    (SELECT p.DES_PR AS Act, c.DES_COM AS com FROM
      table_com AS c JOIN table_pr AS p
         ON c.COD_PR = p.COD_PR) AS m
    ON l.sel = m.com
ORDER BY Cod;

Вся таблица, кроме temp, находится в базе данных MySQL.temp таблица находится в базе данных H2.

Как создать TableName в базе данных H2?

1 Ответ

1 голос
/ 27 сентября 2019

Вам необходимо создать LINKED TABLE для каждой таблицы MySQL, которую вы хотите использовать в H2.

CREATE LINKED TABLE tableName('', 'jdbc:mysql://.......', 'userName', 'password', 'tableNameInMySQL');

См. Полный синтаксис в документации: https://h2database.com/html/commands.html#create_linked_table

Тогдавы сможете использовать tableName как таблицу в H2 в вашем запросе в AS предложении CREATE TABLE и во всех других местах, где они вам нужны.

Наконец, вы можете удалить все эти ссылкитаблицы, когда они больше не будут использоваться.

Для повышения производительности вы также можете попытаться создать одну связанную таблицу, используя запрос с объединениями между таблицами MySQL, как описано в документации, запросы должны быть заключены в скобки.Что-то вроде

CREATE LINKED TABLE m('', 'jdbc:mysql://.......', 'userName', 'password',
'(SELECT p.DES_PR AS Act, c.DES_COM AS com FROM
      table_com AS c JOIN table_pr AS p
         ON c.COD_PR = p.COD_PR)');

и используйте его в своем запросе

CREATE TABLE TableName AS
  SELECT l.*, m.Act FROM temp AS l JOIN
    m
    ON l.sel = m.com
ORDER BY Cod;
...