site表的数据 id a b c 1 100 aaaa 0 2 200 bbbb 0 3 100 aaaa 0 4 200 bbbb 0 5 100 cccc 0 6 100 eeee 1 7 100 aaaa 1 我想找出c=0,a,b字段相同的记录同时求出a,b字段相同的记录条数,相同的记录只显示一条,条件是c=0的a,b字段不能与c=1的a,b字段相同 比如:id=2,4记录的a,b字段相同,那相同记录数是2,同时没有c=1的,a,b字段为200,bbbb的记录, id=1,3记录的a,b字段虽然相同,但是存在c=1的记录与之相同 id=5的记录很明显,只有一条记录,也不存在c=1的记录与之相同 那查询结果就是 a b 相同记录数 100 bbbb 2 100 cccc 1 如果可以的话,最好可以按照“相同记录数”从大到小排名显示
create table #tb( id int, a varchar(10), b varchar(10), c int ) goinsert into #tb values(1,'100','aaaa',0); insert into #tb values(2,'200','bbbb',0); insert into #tb values(3,'100','aaaa',0); insert into #tb values(4,'200','bbbb',0); insert into #tb values(5,'100','cccc',0); insert into #tb values(6,'100','eeee',1); insert into #tb values(7,'100','aaaa',1);goselect a,b,count(*) as 相同记录数 from #tb t1 where t1.c = 0 and not exists (select * from #tb t2 where t2.a = t1.a and t2.b=t1.b and t2.c=1) group by a,b order by 相同记录数 descgodrop table #tb
set nocount on declare @t table(id int,a int,b varchar(10),c int) insert @t select 1, 100, 'aaaa', 0 insert @t select 2, 200, 'bbbb', 0 insert @t select 3, 100, 'aaaa', 0 insert @t select 4, 200, 'bbbb', 0 insert @t select 5, 100, 'cccc', 0 insert @t select 6, 100, 'eeee', 1 insert @t select 7, 100, 'aaaa', 1 select a,b, count(*)相同记录数 from @t t where not exists(select * from @t where c=1 and a=t.a and b=t.b) group by a,b order by 相同记录数 desc a b 相同记录数 ----------- ---------- ----------- 200 bbbb 2 100 cccc 1
id a b c
1 100 aaaa 0
2 200 bbbb 0
3 100 aaaa 0
4 200 bbbb 0
5 100 cccc 0
6 100 eeee 1
7 100 aaaa 1
我想找出c=0,a,b字段相同的记录同时求出a,b字段相同的记录条数,相同的记录只显示一条,条件是c=0的a,b字段不能与c=1的a,b字段相同
比如:id=2,4记录的a,b字段相同,那相同记录数是2,同时没有c=1的,a,b字段为200,bbbb的记录,
id=1,3记录的a,b字段虽然相同,但是存在c=1的记录与之相同
id=5的记录很明显,只有一条记录,也不存在c=1的记录与之相同
那查询结果就是
a b 相同记录数
100 bbbb 2
100 cccc 1
如果可以的话,最好可以按照“相同记录数”从大到小排名显示
create table #tb(
id int,
a varchar(10),
b varchar(10),
c int
)
goinsert into #tb values(1,'100','aaaa',0);
insert into #tb values(2,'200','bbbb',0);
insert into #tb values(3,'100','aaaa',0);
insert into #tb values(4,'200','bbbb',0);
insert into #tb values(5,'100','cccc',0);
insert into #tb values(6,'100','eeee',1);
insert into #tb values(7,'100','aaaa',1);goselect a,b,count(*) as 相同记录数 from #tb t1
where t1.c = 0 and
not exists (select * from #tb t2
where t2.a = t1.a and t2.b=t1.b and t2.c=1)
group by a,b
order by 相同记录数 descgodrop table #tb
declare @t table(id int,a int,b varchar(10),c int)
insert @t select 1, 100, 'aaaa', 0
insert @t select 2, 200, 'bbbb', 0
insert @t select 3, 100, 'aaaa', 0
insert @t select 4, 200, 'bbbb', 0
insert @t select 5, 100, 'cccc', 0
insert @t select 6, 100, 'eeee', 1
insert @t select 7, 100, 'aaaa', 1
select a,b, count(*)相同记录数 from @t t where not exists(select * from @t where c=1 and a=t.a and b=t.b) group by a,b
order by 相同记录数 desc a b 相同记录数
----------- ---------- -----------
200 bbbb 2
100 cccc 1