sql奇怪问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 08:12:18
select count(*) from
(
select a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,count(*)
from test
group by a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t
having count(*)=2
);
COUNT(*)
----------
234
(目的:查看表test中完全相同的记录;结果有234条完全相同)
现将这234条记录作标记:
update test set flag=1 where (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t) in
(
select a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t from test group by
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t having count(*)=2
);
但是却更新0行?
这是怎么回事?语句错误?如何解决?

update test set flag=1 FROM TEST where EXISTS
(SELECT * FROM
(
select a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t from test group by
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t having count(*)=2
) A
WHERE
A.A=TEST.A AND
A.B=TEST.B AND
A.C=TEST.C AND
A.D=TEST.D AND
A.E=TEST.E AND
A.F=TEST.F AND
A.G=TEST.G AND
A.H=TEST.H AND
A.I=TEST.I AND
A.J=TEST.J AND
A.K=TEST.K AND
A.L=TEST.L AND
A.M=TEST.M AND
A.N=TEST.N AND
A.O=TEST.O AND
A.P=TEST.P AND
A.Q=TEST.Q AND
A.R=TEST.R AND
A.S=TEST.S AND
A.T=TEST.T
)

确实是,语法没错,条件也对

全部写在一行,再执行一下看看

你的写法不对呀
where 字段1 in (值1,值2,值3,值4,值5,值6)
或者
where 字段1 in
(select 字段1 from tablename(任意能后回字段1的表)
where XXXXXX条件
)