我有一个名为'symbol'的数据库表,它通过非聚集索引是唯一的。 我们现在需要使用同一表中另一列的数据(例如column2)更改“符号”列中的数据。
尝试进行更新,例如
update table
set symbol = column2
where column2 <> '' and
deleted = 0
导致'无法在对象中插入重复键行'错误,因此表中必须存在1行或更多行,这些行在符号列中已经具有等于column2中的值的值,或者存在某些行具有重复的第2列值。
我可以在column2中找到具有重复项的行,但是我很难想出一个查询来查找在column2的任何行中存在的符号列中具有值的行。有人有任何想法吗?
感谢。
答案 0 :(得分:1)
select t1.symbol, count(0) as rows
from table t1
join table t2 on t2.column2 = t1.symbol
group by t1.symbol
答案 1 :(得分:0)
测试数据:
symbol column2
----------- -----------
1 1
2 1
3 3
4 5
找到那些在符号列中有值的行 第2列中的任何行。
select symbol, column2
from table
where symbol in (select column2
from table)
结果:
symbol column2
----------- -----------
1 1
3 3
或者可能这取决于你想要的结果。
select symbol, column2
from table as T1
where exists (select *
from table as T2
where T1.symbol = T2.column2 and
T1.symbol <> T2.symbol)
结果:
symbol column2
----------- -----------
1 1