从同一服务器上的两个数据库 db1 和 db2 中获取唯一数据
Posted
技术标签:
【中文标题】从同一服务器上的两个数据库 db1 和 db2 中获取唯一数据【英文标题】:Bring Unique data from two database db1 and db2 on same server 【发布时间】:2018-07-19 05:00:52 【问题描述】:我在同一台服务器上有两个数据库名称 db1 和 db2,我需要一个 sql 查询来获取唯一数据。下面是数据库和表名
db1
Table_db1
EmailID Name Mobile
raj@gmail.com raj 7207542655
kumar@gmail.com kumar 111111111
db2
Table_db2
EmailID Name Mobile
raj@gmail.com raj 7207542655
rohan@gmail.com rohan 5555555555
raj@gmail.com 从表中删除了重复项,输出应该是
raj@gmail.com raj 7207542655
kumar@gmail.com kumar 111111111
rohan@gmail.com rohan 5555555555
我需要基于 Table_db1 和 Table_db2 的 EmailID 来自 db1 和 db2 的唯一数据
从 Table_db1 和 Table_db2 中获取单个 EmailID 数据
【问题讨论】:
堆栈中的任何一个溢出。@all 一些数据和预期输出可能有助于完全理解问题。 输出将相同的列 EmailID 名称移动。 @苏桑 我更新了我的问题。 @苏桑 嗨,mazhar,两个表中的姓名和手机号码也相同? 【参考方案1】:你可以试试这个
SELECT distinct te1.Emailid, (select top 1 [name] from [db1].dbo._Table_1 as te11 where te11.emailid = te1.emailid) as [Name]
FROM [db1].dbo._Table_1 as te1
WHERE EXISTS (
SELECT emailId
FROM [db2].dbo._Table_1 as te2
WHERE te1.emailid = te2.emailid
)
UNION
SELECT distinct te1.Emailid, (select top 1 [name] from [db1].dbo._Table_1 as te11 where te11.emailid = te1.emailid) as [Name]
FROM [db1].dbo._Table_1 as te1
WHERE not EXISTS (
SELECT emailId
FROM [db2].dbo._Table_1 as te2
WHERE te1.emailid = te2.emailid
)
UNION
SELECT distinct te2.Emailid, (select top 1 [name] from [db2].dbo._Table_1 as te22 where te22.emailid = te2.emailid) as [Name]
FROM [db2].dbo._Table_1 as te2
WHERE not EXISTS (
SELECT emailId
FROM [db1].dbo._Table_1 as te1
WHERE te1.emailid = te2.emailid
)
【讨论】:
我正在尝试这个:从 IntranetNew_Live.dbo.Table_CandidateMaster 中选择 a.*,b.* 作为 --DB1= 第一个数据库名称,dbo=schema(固定不变),tbl1=table from第一个数据库,a= 整个路径的别名 (DB1.dbo.tbl1) left join Intranet_NewVersion.dbo.Table_CandidateMaster as b --DB2= 第二个数据库名称,dbo=schema(固定不变),tbl2=来自第二个数据库的表,b = a.EMail=b.EMail .@Pradip Meghapra 上的整个路径 (DB2.dbo.tbl2) 的别名 我会检查你的查询会通知你。 @Pradip Meghapra【参考方案2】:您的行完全相同。只需使用union
:
select EmailID, Name, Mobile
from Table_db1
union -- on purpose to remove duplicates
select EmailID, Name, Mobile
from Table_db2;
如果其他列可以不同并且表中没有重复,则:
select EmailID, Name, Mobile
from Table_db1
union all
select EmailID, Name, Mobile
from Table_db2 t2
where not exists (select 1 from Table_db1 t1 where t1.EmailID = t2.EmailID);
【讨论】:
以上是关于从同一服务器上的两个数据库 db1 和 db2 中获取唯一数据的主要内容,如果未能解决你的问题,请参考以下文章
将 mySql 数据库表复制到另一个具有不同表结构的数据库表
如何迁移使用主键和自动增量值 SQL 2008 R2 的两个数据库
C# 如何实现sqlserver 2008中两个数据库中两张表的关联查询。 如: sleect * from db1.tab1,db2.tab2;