如何解决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 举报,一经查实,本站将立刻删除。