27

重複する値を持つ列を持つテーブルがあります。2 つの重複値の 1 つを更新したいので、たとえばrow1 = tomrow2 = tom.. 1 または a をそれらの 1 つに追加したいのですが、それは同じ列内の他の多くの重複に適用されます。基本的に、重複がないように、重複の 1 つごとに 1 つの数字または文字を追加するだけです。

すべての重複を更新するこのクエリを取得しましたが、それらの 1 つではありません。誰でも助けることができますか?

UPDATE Table1
   SET Column1 = 'a'
 WHERE exists
       (SELECT Column1 , COUNT(Column1 )
FROM Clients
GROUP BY Column1 
HAVING ( COUNT(Column1 ) > 1)
)
4

13 に答える 13

57

CTEと で これを試してくださいPARTITION BY

;WITH cte AS
(
  SELECT
      ROW_NUMBER() OVER(PARTITION BY Column1  ORDER BY Column1 ) AS rno,
      Column1 
  FROM Clients
)

UPDATE cte SET Column1 =Column1 +' 1 '
WHERE rno=2
于 2013-07-22T09:49:59.843 に答える
3

Table1次の情報を含むと仮定します。

Column1      
========  
tom        
john   
jack    
tom     
james
jane 

1 行目と 4 行目が同一であることに注意してください。UPDATEそのうちの 1 つのみで名前を変更するコマンドを次に示します。

UPDATE Table1 AS t1
   SET Column1 = 'jennifer'
 WHERE rrn(t1) =
       (SELECT MAX(rrn(t2))
          FROM Table1 AS t2
         WHERE Column1 = 'tom')

そして結果は

Column1      
========  
tom        
john   
jack    
jennifer
james
jane 

関数を使用するとRRN、重複レコードの最後の発生を更新できます

于 2013-07-22T09:30:22.437 に答える
0

この仲間を試してみてください

UPDATE Table1 
SET Column1 = column1 +'a'   
WHERE exists(
        select row 
        from (
            SELECT 
                Column1 , 
                Row_Number() over(Partition by Column1 order by Column1) as row 
            FROM Clients
        ) as subquery 
        where subquery.row = 2
    )
于 2013-07-22T09:30:57.047 に答える