是否可以从具有 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 同步两个链接服务器中的两个表?