是否可以从具有 SQL 和 mySql 中的数据库的内部连接中获取不同数据库的信息?

Posted

技术标签:

【中文标题】是否可以从具有 SQL 和 mySql 中的数据库的内部连接中获取不同数据库的信息?【英文标题】:Is it possible to get information from different database with inner join having database in SQL and mySql? 【发布时间】:2011-09-12 06:54:07 【问题描述】:

我有一个带有 mysql 数据库的项目 A,我有另一个带有 msSql 的项目 B。我已经从 A 连接数据库并从 B 获取数据。但是现在我需要对 A 和 B 中的表使用内连接。是否可以对同一服务器和不同服务器中的数据库这样做?任何帮助将不胜感激。

提前致谢

【问题讨论】:

另外,选择meaningful name 也有好处,比如at-replies。 【参考方案1】:

是的,应该可以。首先,您需要将 MySQL 服务器链接到 MS SQL Server。 见this reference。其次,您可能需要使用子查询来选择正确的列并对它们进行连接;

SELECT *
FROM
  (SELECT ms_column1, ms_column2 FROM MSSQLTABLE) AS mssql
JOIN
  (SELECT my_column1, my_column2 
   FROM openquery(LINKED_SERVER, 'SELECT column1, column2 FROM MYSQLTABLE') AS mysql
  ON mssql.ms_column1 = mysql.my_column1

很遗憾,未经测试。

【讨论】:

【参考方案2】:

您可以将通信逻辑移至编程层,而不是让两个不同的数据库在它们之间进行通信。例如,使用 PDO 和 php,您可以连接到两个数据库、获取数据、混合数据并生成结果。您可以创建一个 PHP 类的抽象层,从 A 或 B 数据库中独立获取信息,之后您将不再关心它,因为您将使用 PHP 对象而不是直接使用数据库。

【讨论】:

这是一种有效的方法,通常易于实施。但是,在处理大表或复杂连接时,它可能真的很慢。如果两个数据库可以连接,将有助于加快一些查询。想象一下,必须从一个数据库中提取几百万行,从另一个数据库中提取几千行,然后比较 (JOIN) 和过滤 (WHERE) 以发现只需要显示几行。 真的。我只是在提供替代方案。

以上是关于是否可以从具有 SQL 和 mySql 中的数据库的内部连接中获取不同数据库的信息?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 MySQL 和 MSSQL 同步两个链接服务器中的两个表?

是否可以从 Azure SQL DB 连接 Azure SQL 托管实例?

将数据从 SQL Server 复制到 Mysql

PHP/SQL:从数据库接收到的“假”值具有良好的查询

MySQL集群配置

mongodb与mysql传统的关系数据库区别