微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

A 列上的 SQL 内连接并比较 B 列中的值

如何解决A 列上的 SQL 内连接并比较 B 列中的值

我确定或者希望有一种简单的方法可以做到这一点。下面是我最近的尝试。查询应该只返回一行,但我得到 31。

查询

    `select distinct a.[EC CERS],a.[EC Tank ID],[CIW Tank ID]
    from #tempectank a  
    inner join #tempciwtank b on a.[EC CERS] = b.[CIW CERS] 
    where a.[EC Tank ID] <> b.[CIW Tank ID]`

表格数据:

表A

EC CERS EC 坦克​​ ID
100338 1
100338 2
100338 3

表 B

CIW CERS CIW 坦克 ID
100338 001
100338 2
100338 3

表格架构

    create table #tempectank(
    s int IDENTITY (1,1),[EC CERS] varchar(9),[EC Tank ID] varchar(255)
    )

我需要查询返回一行,最好显示 EC CERS、EC Tank ID 和 CIW Tank ID。

解决方法

如果是导致 ziros 的问题,您可以使用此解决方案:

如果您的 ID 中没有数字,这将不起作用

Select a.[EC CERS],a.[EC Tank ID],b.[CIW Tank ID]
from #tempectank a  
inner join #tempciwtank b 
    on a.[EC CERS] = b.[CIW CERS] 
    and a.[EC Tank ID] <> b.[CIW Tank ID]
    and cast(a.[EC Tank ID] as int ) =  cast(b.[CIW Tank ID] as int)

实际上另一种解决方案是显示那些您找不到匹配项的内容:

select * from #tempectank a   
where not exists (select 1 from #tempciwtank b 
                   where a.[EC CERS] = b.[CIW CERS] 
                     and a.[EC Tank ID] = b.[CIW Tank ID]
                 )
and exists (select 1 from #tempciwtank b where a.[EC CERS] = b.[CIW CERS])

如果你想并排显示不匹配的案例,你必须从两边找到不匹配的实例:

select * from (
select * from #tempectank a   
where not exists (select 1 from #tempciwtank b 
                   where a.[EC CERS] = b.[CIW CERS] 
                     and a.[EC Tank ID] = b.[CIW Tank ID]
                 )
and exists (select 1 from #tempciwtank b where a.[EC CERS] = b.[CIW CERS])
) a 
join (
select * from #tempciwtank b 
where not exists (select 1 from #tempectank a   
                   where a.[EC CERS] = b.[CIW CERS] 
                     and a.[EC Tank ID] = b.[CIW Tank ID]
                 )
and exists (select 1 from #tempectank a  where a.[EC CERS] = b.[CIW CERS])
)b 
on  a.[EC CERS] = b.[CIW CERS] 
,

如果您想要 a.[EC CERS] = b.[CIW CERS] 和 a.[EC Tank ID] b.[CIW Tank ID] 的行,请尝试以下操作:

Select a.[EC CERS],b.[CIW Tank ID]
from #tempectank a  
inner join #tempciwtank b 
           on a.[EC CERS] = b.[CIW CERS] 
           and a.[EC Tank ID] <> b.[CIW Tank ID]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。