首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在查询中连接MS-SQL和MySQL表?

问如何在查询中连接MS-SQL和MySQL表?
EN

Stack Overflow用户
提问于 2011-10-10 19:30:52
回答 1查看 3.1K关注 0票数 4

我想做一个跨MS-SQL和MySql数据库的连接帐户。

MS-SQL查询有效地生成一个索引,然后我想拉回与该查询的结果匹配的所有MySQL记录。(我可以取回两个表,即来自MySQL的未过滤数据,然后使用Linq过滤,但这样效率会很低,因为我将拉回比我需要的更多的数据。)

MS-SQL查询是通过Linq完成的:

代码语言:javascript
复制
var fb1 = from f in db.tl_feedbacks  
          where f.timestamp >= new DateTime(fromYear, fromMonth, fromDay)
             && f.timestamp <= new DateTime(toYear, toMonth, toDay)   
          select new {f.requestID, f.tl_feedback_score.score };

这将返回一个如下所示的表:

代码语言:javascript
复制
RequestID | score
-----------------
12345     | 1
12349     | 3
12446     | 3

等。

因此,我希望只返回上表中具有RequestID的以下MySQL查询中的那些记录:

代码语言:javascript
复制
SELECT wo.WORKORDERID,
       COALESCE(ti.FIRST_NAME,'Not Assigned') AS 'Technician',
       COALESCE(cd.CATEGORYNAME, 'Not Assigned') AS Category,
       COALESCE(scd.NAME, 'Not Assigned') AS Subcategory,
       wof.UDF_CHAR1 "Office Location"  
FROM WorkOrder_Threaded wot  
INNER JOIN WorkOrder wo ON wot.WORKORDERID=wo.WORKORDERID  
LEFT JOIN SDUser sdu ON wo.REQUESTERID=sdu.USERID  
LEFT JOIN AaaUser aau ON sdu.USERID=aau.USER_ID  
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID  
LEFT JOIN SDUser td ON wos.OWNERID=td.USERID  
LEFT JOIN AaaUser ti ON td.USERID=ti.USER_ID  
LEFT JOIN CategoryDefinition cd ON wos.CATEGORYID=cd.CATEGORYID  
LEFT JOIN SubCategoryDefinition scd ON wos.SUBCATEGORYID=scd.SUBCATEGORYID  
LEFT JOIN WorkOrder_Fields wof ON wo.WORKORDERID=wof.WORKORDERID  

也就是说,在本例中,我只想拉回12345、12349和12446条记录。最终,我需要一个表,其中包含requestID、score和来自MySQL查询的列。但是,如果我能拿回“过滤”的MySQL表,我就可以在以后加入这两个表。我只是不想把MySQL带回“未过滤”的状态,因为这个表会很大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-10 19:38:18

有了正确的OLEDB数据库驱动程序(我只用PGSQL做了这件事,所以我真的不能给出建议),你就可以在MSSQL中创建一个Linked Server。这是a walkthrough和here's another。

然后,您可以在MSSQL中使用OPENQUERY查询它,如下所示:

代码语言:javascript
复制
select * from openquery(LinkedServerDb,'select * from remotetable')

并加入:

代码语言:javascript
复制
select 
    * 
from 
    openquery(LinkedServerDb,'select * from remotetable') remoteTable
    join localTable on remotetable.someid=localtable.otherid
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7712127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档