0

我有两个表: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

4

4 回答 4

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]
于 2013-07-03T09:24:41.113 回答
0

再次复制您的副本,放入当前数据库的另一个表中,然后进行比较。

于 2013-07-03T09:38:46.757 回答
0

从其他答案的评论来看,您似乎需要比较来自不同数据库服务器的两个表。在这种情况下,您必须使用联合存储引擎。这是必须在数据库服务器上完成的更改。你不能在你的 Java 代码中这样做。

如果您必须在 Java 中执行此操作并且无法修改数据库中的任何内容,则必须将所有数据下载到内存并手动比较它们。

于 2013-07-03T09:27:36.540 回答
-1

如果您使用的是 mysql,则数据库相当于模式。所以它是直截了当的

select * 
from p.Test natural join q.Test;
于 2013-07-03T09:22:55.967 回答