create table #t1(id int,mark char(2))
go
create table #t2(id int,mark char(2))
go
insert into #t1
select 1,'t1' union all
select 2,'t2' union all
select 3,'t3' union all
select 4,'t4'
go
insert into #t2
select 2,'t2' union all
select 7,'t2' union all
select 3,'m3' union all
select 5,'m5' union all
select 6,'t6'
go
比较mark 的值是否有重复, 比较时要排除id相同的, 比如以上例子中查询结果为:
t1 中id =2的在t2 表中有重复值 ,id=7
用INTERSECT 貌似不可以, 只能查询出id相同的
这感觉是两个union到一起,然后groupby就行了?
我是这样查的
select * from #t1 a,#t2 b where a.id<>b.id and a.mark=b.mark
结果集:
id mark id mark
2 t2 7 t2
但是感觉这种方法好low啊, 所以问问有没有其他高大上的方法
@宋小熊: 你要那么高大上干嘛?能得到结果就行了呗???
@顾晓北: 额 好吧 (*^__^*) 嘻嘻……
select t1.id, t2.id, t1.mark, t2.mark from #t1 t1 cross join #t2 t2 where t1.id<>t2.id and t1.mark=t2.mark
谢谢 嘻嘻
使用 exists 或 not exists 可以解决
select * from table group by mark having count(*)>2