我必须数据库,一个MySQL数据库和一个嵌入在我的Java应用程序中的H2数据库。
我想CREATE TABLE
H2 数据库连接 H2 表和结果集,即来自 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
?
您需要为要在 H2 中使用的每个 MySQL 表创建一个LINKED TABLE
。
CREATE LINKED TABLE tableName('', 'jdbc:mysql://.......', 'userName', 'password', 'tableNameInMySQL');
请参阅文档中的完整语法: https://h2database.com/html/commands.html#create_linked_table
然后,您将能够在 H2 中的CREATE TABLE
子句AS
中的查询中将该tableName
用作表,并在您需要它们的所有其他地方使用。
最后,当所有这些链接表不再使用时,您可以删除它们。
为了获得更好的性能,您还可以尝试使用在 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;