如何在查询中连接MS-SQL和MySQL表?
本文关键字:MySQL MS-SQL 连接 查询 | 更新日期: 2023-09-27 18:11:02
我想做一个跨MS-SQL和MySql数据库的连接。
MS-SQL查询有效地生成了一个索引,然后我想拉回所有与该查询结果匹配的MySQL记录。(我可以带回两个表,即从MySQL中未过滤的数据,然后使用Linq过滤,但这将是低效的,因为我将拉回加载比我需要的更多的数据。)
MS-SQL查询是通过Linq:
完成的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 };
这将返回一个像这样的表:
RequestID | score
-----------------
12345 | 1
12349 | 3
12446 | 3
等。
从这个我想只返回那些记录从以下MySQL查询有一个requesttid在上面的表:
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
。e在本例中,我只想拉回记录12345、12349和12446。最后,我想要一个单独的表,其中包含requesttid、score和来自MySQL查询的列。但是,如果我能得到"过滤"的MySQL表,我就可以在之后连接这两个表。我只是不想让MySQL返回"未过滤",因为表将是巨大的
使用正确的OLEDB数据库驱动程序(我只使用PGSQL这样做过,所以我不能真正建议),您可以在MSSQL中创建链接服务器。这是一个演练,这是另一个。
然后可以在MSSQL中使用OPENQUERY查询它,如下所示:
select * from openquery(LinkedServerDb,'select * from remotetable')
并加入:
select
*
from
openquery(LinkedServerDb,'select * from remotetable') remoteTable
join localTable on remotetable.someid=localtable.otherid