n未来。@daZza不需要镜像数据。@Zohar拒绝,但如果有解决方案出现,我愿意将数据移植到其中任何一个。我主要使用您实际使用的SQLServer2008R2和2014tag one dbms。显然,您不需要MySql、SqlServer和Sqlite的
n未来。@daZza不需要镜像数据。@Zohar拒绝,但如果有解决方案出现,我愿意将数据移植到其中任何一个。我主要使用您实际使用的SQLServer2008R2和2014tag one dbms。显然,您不需要MySql、SqlServer和Sqlite的,sql,sql-server,Sql,Sql Server,n未来。@daZza不需要镜像数据。@Zohar拒绝,但如果有解决方案出现,我愿意将数据移植到其中任何一个。我主要使用您实际使用的SQLServer2008R2和2014tag one dbms。显然,您不需要MySql、SqlServer和Sqlite的解决方案。。。请仅标记相关的rdbms,并添加特定的版本标记。表中是否需要镜像数据?我会删除其中一个,然后在用户ID上放置一个主键。这样以后就可以避免类似的情况了。@daZza不需要镜像数据。@Zohar拒绝了,但如果有解决方案,我愿意将数据移
n未来。@daZza不需要镜像数据。@Zohar拒绝,但如果有解决方案出现,我愿意将数据移植到其中任何一个。我主要使用您实际使用的SQLServer2008R2和2014tag one dbms。显然,您不需要MySql、SqlServer和Sqlite的解决方案。。。请仅标记相关的rdbms,并添加特定的版本标记。表中是否需要镜像数据?我会删除其中一个,然后在用户ID上放置一个主键。这样以后就可以避免类似的情况了。@daZza不需要镜像数据。@Zohar拒绝了,但如果有解决方案,我愿意将数据移植到任何一个镜像数据。我主要使用SQLServer2008R2和2014这是一个很好的答案,但删除是不够的。必须添加一个检查约束,以防止将来重复。这是一个很好的答案,但删除是不够的。必须添加检查约束,以防止将来重复。
select userid,function1,function2 from (
select userid,function1,function2
,row_number() over(partition by userid
order by
case when function1<function2 then function1 else function2 end,
case when function1>function2 then function1 else function2 end,
function1
) as rnum
from tablename
) t
where rnum=1
with cte as (select userid,function1,function2
,row_number() over(partition by userid
order by
case when function1<function2 then function1 else function2 end,
case when function1>function2 then function1 else function2 end,
function1
) as rnum
from tablename)
delete from cte where rnum > 1
DELETE FROM table
WHERE temp_pk IN
(
SELECT Max(temp_pk) AS pkToDelete
FROM
(
SELECT temp_pk, A, B
FROM table
WHERE A<=B
UNION ALL
SELECT temp_pk, B, A
FROM table
WHERE A>B
) AS u
GROUP BY A, B
HAVING COUNT(*) > 1
)
delete from t
where function1 > function2;
select *
into temp_t
from t
where function1 < function2;
truncate table t;
insert into t
select *
from temp_t;
select *
into temp_t
from t
where function1 < function2
union all
select *
from t t
where function1 > function2 and
not exists (select 1 from t t2 where t2.function1 = t.function2 and t2.function2 = t.function1);