注册 登录
编程论坛 SQL Server论坛

詢問 兩個table 各有兩個欄位 證號一樣 名子不同,如何只判斷證號而不判斷名子

hiiloveyou 发布于 2016-10-16 15:01, 2170 次点击
Hi

我是新手,請問一個問題

table1
內有兩個欄位
ID => A123456789
NAME => Chris

table2
有兩筆資料
ACCT => A123456789
NAME => March

ACCT => A123456789
NAME => Chris

select count(1) from table1 a,table b
where a.ID=b.ACCT

結果:
兩筆資料
雖然證號都是A123456789,但名子不同

我要計算只需計算出一筆資料,如何忽略NAME欄位而得到我要的結果呢?
我要的結果為
A123456789 數量一筆


[此贴子已经被作者于2016-10-16 15:02编辑过]

2 回复
#2
mywisdom882016-10-17 08:56
--建立测试表 tb1,tb2(#表示临时表)
create table #tb1(id varchar(12),name varchar(20))
create table #tb2(acct varchar(12),name varchar(20))

insert into #tb1
select 'A123456789','Chris' union all
select 'A123456789','Chris' union all
select 'A123456789','Chris' union all
select 'A123456789','Chris' union all
select 'A100000002','Chris' union all
select 'A100000001','Mary'


insert into #tb2
select 'A123456789','March' union all
select 'A123456789','Chris' union all
select 'A100000003','Chris' union all
select 'A100000001','Anmi'

--你的要的答案不明确,不知道你要统计那个表的记录数,有下面3种情况

--统计1、  显示“表1在表2存在”的 ID,笔数
select a.id,count(*) as cnt from #tb1 a where a.id in(select distinct acct from #tb2 ) group by a.id
--统计2、  显示”表2在表1存在“的 ACCT,笔数
select b.acct ,count(*) as cnt from #tb2 b where b.acct in(select distinct id from #tb1 ) group by b.acct

--统计3、  显示“2个表都存在”的,记录总次
select c.id,count(*)总次 from(
  select a.id,a.name from #tb1 a where a.id in(select distinct acct from #tb2)
  union all
  select b.acct,b.name from #tb2 b where b.acct in(select distinct id from #tb1)
)c
group by c.id

--删除测试表
drop table #tb1
drop table #tb2


[此贴子已经被作者于2016-10-17 15:03编辑过]

#3
mywisdom882016-10-17 08:58
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-10-17 15:04编辑过]

1