在H2表和ResultSet之间进行JOIN(从MySQL表中选择)

问题描述 投票:0回答:1

我必须拥有数据库,一个MySQL数据库和一个嵌入在Java应用程序中的H2数据库。

我想在H2数据库上将CREATE TABLE连接到H2表和一个ResultSet,即MySQL数据库中的SELECT

我想在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数据库上。

如何在H2数据库上创建TableName

mysql join jdbc h2 resultset
1个回答
1
投票

您需要为要在H2中使用的每个MySQL表创建一个LINKED TABLE

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

请参见文档中的完整语法:https://h2database.com/html/commands.html#create_linked_table

然后,您就可以在tableNameAS子句以及您需要的所有其他地方的查询中,将CREATE TABLE用作H2中的表。

最后,当所有不再使用的链接表时,您可以删除它们。

为了获得更好的性能,您还可以尝试使用带有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;
© www.soinside.com 2019 - 2024. All rights reserved.