在 H2 table 和 ResultSet 之间进行 JOIN (select from MySQL table)
Doing JOIN between H2 table and ResultSet (select from MySQL table)
我必须在我的 Java 应用程序中嵌入一个 MySQL 数据库和一个 H2 数据库。
我想 CREATE TABLE
在 H2 数据库上加入一个 H2 table 和一个结果集,即来自 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
之外的所有 table 都在 MySQL 数据库中。
temp
table 在 H2 数据库上。
如何在 H2 数据库上创建 TableName
?
您需要为每个要在 H2 中使用的 MySQL table 创建一个 LINKED TABLE
。
CREATE LINKED TABLE tableName('', 'jdbc:mysql://.......', 'userName', 'password', 'tableNameInMySQL');
查看文档中的完整语法:
https://h2database.com/html/commands.html#create_linked_table
然后您将能够在 CREATE TABLE
的 AS
子句中以及您在所有其他地方的查询中将 tableName
用作 H2 中的 table需要他们。
最后,当这些链接的 table 不再使用时,您可以删除它们。
为了获得更好的性能,您还可以尝试使用在 MySQL table 之间进行连接的查询来创建单个链接 table,如文档中所述,查询必须括在括号中.像
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;
我必须在我的 Java 应用程序中嵌入一个 MySQL 数据库和一个 H2 数据库。
我想 CREATE TABLE
在 H2 数据库上加入一个 H2 table 和一个结果集,即来自 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
之外的所有 table 都在 MySQL 数据库中。
temp
table 在 H2 数据库上。
如何在 H2 数据库上创建 TableName
?
您需要为每个要在 H2 中使用的 MySQL table 创建一个 LINKED TABLE
。
CREATE LINKED TABLE tableName('', 'jdbc:mysql://.......', 'userName', 'password', 'tableNameInMySQL');
查看文档中的完整语法: https://h2database.com/html/commands.html#create_linked_table
然后您将能够在 CREATE TABLE
的 AS
子句中以及您在所有其他地方的查询中将 tableName
用作 H2 中的 table需要他们。
最后,当这些链接的 table 不再使用时,您可以删除它们。
为了获得更好的性能,您还可以尝试使用在 MySQL table 之间进行连接的查询来创建单个链接 table,如文档中所述,查询必须括在括号中.像
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;