我有两个表:p.Test和q.Test在两个不同的数据库上 - p和q。
这两个表都有不同的MYSQL连接,并且位于两个不同的服务器上。
我需要按照此处的说明进行自然加入:http://www.microshell.com/database/sql/comparing-data-from-2-database-tables/2/
我怎么可能这样做?我也在使用java PreparedStatement来实际运行查询。有没有办法可以做到这一点?
假设我为每个人创建了两个连接:
Connection conn1 = DriverManager.getConnection(URLtoPDB, Username,Password);
Connection conn1 = DriverManager.getConnection(URLtoQDB, Username,Password);
如何触发preparedStatement甚至说:select * from p.Test,q.Test
答案 0 :(得分:0)
您可以在查询中的表名之前指定数据库名称,如下所示
SELECT
*
FROM
[yourdatabase1].[jajal].[j]
NATURAL LEFT JOIN [yourdatabase2].[jajal_copy] jc
WHERE
jc.user_id IS NULL
UNION ALL
SELECT
*
FROM
[yourdatabase1].[jajal].[j]
NATURAL RIGHT JOIN [yourdatabase2].[jajal_copy] jc
WHERE
j.user_id IS NULL
您可以将不同服务器的服务器名称用作
select
*
from
LocalTable,
[OtherServerName].[OtherDB].[dbo].[OtherTable]
答案 1 :(得分:0)
从其他答案的评论中,您似乎需要比较来自不同数据库服务器的两个表。在这种情况下,您必须使用federated storage engine。这是必须在数据库服务器上完成的更改。你不能在Java代码中这样做。
如果您必须使用Java进行操作并且无法修改数据库中的任何内容,则必须将所有数据下载到内存中并手动进行比较。
答案 2 :(得分:0)
再次将您的副本放入当前数据库的另一个表中,然后进行比较。
答案 3 :(得分:-1)
如果您使用的是mysql,则数据库等同于schema。 所以它很直接
select *
from p.Test natural join q.Test;