日期:2014-05-18  浏览次数:21165 次

查询两字段值不相同
有一个表TA两个字段A和B有几组数据如下

  A B
  1111 1111
  1111 AAAA
  1111 1111
  2222 2222
  2222 2222
  2222 2222
  3333 3333
  444 444
找出1111这组数据,因为第二行的B字段和A字段内容不相同

------解决方案--------------------
SQL code
--??
Select * 
from #t
where [a]!=[B]

------解决方案--------------------
SQL code

declare @tablename table (A varchar(4),B varchar(4))
insert into @tablename
select '1111','1111' union all
select '1111','AAAA' union all
select '1111','1111' union all
select '2222','2222' union all
select '2222','2222' union all
select '2222','2222' union all
select '3333','3333' union all
select '444','444'

select a.* from @tablename a right join @tablename b
on a.A=b.A where b.A<>b.B
/*
A    B
---- ----
1111 1111
1111 AAAA
1111 1111
*/

------解决方案--------------------
SQL code
select * from 
ta where a!=b

------解决方案--------------------
SQL code
----创建测试数据
if object_id('ta')  is not null  drop table ta
create table ta (A varchar(20),B varchar(20))
insert into ta 
select '1111','1111' union all
select '1111','AAAA' union all
select '1111','1111' union all
select '2222','2222' union all
select '2222','2222' union all
select '2222','2222' union all
select '3333','3333' union all
select '444','444'
---查询
(select a ,b from ta)
union 
(select a,b from ta)

------解决方案--------------------
SQL code

declare @tablename table (A varchar(4),B varchar(4))
insert into @tablename
select '1111','1111' union all
select '1111','AAAA' union all
select '1111','1111' union all
select '2222','2222' union all
select '2222','2222' union all
select '2222','2222' union all
select '3333','3333' union all
select '444','444' union all
select '5555','bbb' union all
select '5555','bbb'

select a.* from @tablename a right join @tablename b
on a.A=b.A left join
(select count(distinct B) as c1,A from @tablename group by A ) c
on b.A=c.A where c.c1>1 and b.A<>b.B

/*
A    B
---- ----
1111 1111
1111 AAAA
1111 1111
*/