[SQL] 는 SQL 서버 데이터베이스 테이블이 개 중복 업데이트 한
SQL는 SQL 서버 데이터베이스 테이블이 개 중복 업데이트 한
나는 중복 값과 열을 가지고있는 테이블을 가지고있다. 내가 그렇게 예를 들어 ROW1 = 톰과 ROW2 = 톰에 대한이 개 중복 값 중 하나를 업데이트하고 싶습니다 .. 내가 추가 할 하나 또는 그 중 하나 그에게 A가 같은 열에서 많은 중복 될 것입니다. 기본적으로 너무 더 이상 중복 거기에 중복의 모든 하나 하나 개의 숫자 또는 문자를 추가합니다.
나는 그들 중 하나를 모든 중복을 업데이트 할 수 있지만하지 않습니다이 쿼리를 얻었다. 누구든지 도움이 수 있습니까?
UPDATE Table1
SET Column1 = 'a'
WHERE exists
(SELECT Column1 , COUNT(Column1 )
FROM Clients
GROUP BY Column1
HAVING ( COUNT(Column1 ) > 1)
)
해결법
-
==============================
1.CTE 및 파티션 BY와 함께이 시도
CTE 및 파티션 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
-
==============================
2.나는이 간단한 업데이트 당신이 찾고있는 무슨 생각;
나는이 간단한 업데이트 당신이 찾고있는 무슨 생각;
UPDATE Table1 SET Column1=Column1+CAST(id AS VARCHAR) WHERE id NOT IN ( SELECT MIN(id) FROM Table1 GROUP BY Column1 );
입력:
(1,'A'), (2,'B'), (3,'A'), (4,'C'), (5,'C'), (6,'A');
산출:
(1,'A'), (2,'B'), (3,'A3'), (4,'C'), (5,'C5'), (6,'A6');
로 테스트하는 SQLfiddle.
-
==============================
3.나는 당신이 쉽고 간단한 방법의 하나를 업데이트하는 데 도움이 될 것입니다 당신이 TOP () 대신 ROW_NUMBER () 메소드의 연산자를 사용할 수 있다고 생각
나는 당신이 쉽고 간단한 방법의 하나를 업데이트하는 데 도움이 될 것입니다 당신이 TOP () 대신 ROW_NUMBER () 메소드의 연산자를 사용할 수 있다고 생각
UPDATE TOP ( 1 )Table1 SET Column1 = 'a';
-
==============================
4.다음과 같은 정보를 포함하는 표를 가정합니다 :
다음과 같은 정보를 포함하는 표를 가정합니다 :
Column1 ======== tom john jack tom james jane
공지 제 1 및 제 4 행은 동일 함. 여기에 그 중 하나의 이름을 변경하는 UPDATE 명령입니다.
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 기능 중복 레코드의 마지막 occurance를 업데이트 할 수 있습니다
-
==============================
5.우리는이 조건이있는 경우 :
우리는이 조건이있는 경우 :
SELECT Column1 FROM Clients ORDER BY Column1 Column1 ********** Jhon Jhon Mike Mike Mike Robert
이 열 1 중복 된 n 번, 그것은 첫 번째 제외한 모든 중복 행에 행 번호를 추가합니다 경우에도이 시도 작동합니다 :
BEGIN ;WITH CTE AS ( SELECT ROW_NUMBER() OVER (PARTITION BY Column1 ORDER BY Column1) AS ROWNUMBER, Column1 FROM Clients ) UPDATE CTE SET Column1 = CONCAT(Column1, ' ', (ROWNUMBER - 1)) WHERE ROWNUMBER > 1 SELECT Column1 FROM Clients ORDER BY Column1 END
결과:
Column1 *********** Jhon Jhon 1 Mike Mike 1 Mike 2 Robert
-
==============================
6.이 짝을보십시오
이 짝을보십시오
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 )
-
==============================
7.나는 a로 업데이트처럼 내 SQL 개발자 didnt 한 이후로부터 내부로 넣어했다 Nithesh의 대답에서 복사
나는 a로 업데이트처럼 내 SQL 개발자 didnt 한 이후로부터 내부로 넣어했다 Nithesh의 대답에서 복사
그것은이처럼 보이는 결국 :
UPDATE Clients SET Column1 = 'a' WHERE ColumnID IN (select ColumnID from ( SELECT row_number() OVER(PARTITION BY Column1 ORDER BY Column1 ) AS rno, ColumnID FROM Clients ) where rno=2 )
-
==============================
8.이 시도
이 시도
with test as ( select ROW_NUMBER() over (order by salary)rr, salary , emp_no from salary )update test set emp_no=10007 where emp_no='10002' and rr=3
-
==============================
9.
UPDATE table1 SET STATUS = 'F' WHERE column1= (SELECT (column1) FROM table1 GROUP BY column1 HAVING (COUNT(column1 ) > 1))
-
==============================
10.
update wmwhse1.sku set descr= concat (descr,'.') where exists (select SKU,count (DESCR) from wmwhse1.sku group by descr having (count (DESCR)>1))
나는이 스크립트를 실행하면 모든 SKU 설명을 업데이트하고 있습니다.
출력 : 경우 1 행은 영향되어야
-
==============================
11.나는이 솔루션을 발견했다 :
나는이 솔루션을 발견했다 :
내 테이블 장치는 이미 데이터를하고 "시리얼"열은 고유해야합니다. 은 "ID"는 기본 키입니다. 임의의 6 자리 값을 원래 값 후 연접된다.
UPDATE devices SET serial=CONCAT(serial,'_',LPAD(FLOOR(RAND() * 999999.99), 6, '0')) where id in (select * FROM( SELECT d1.id as id FROM devices as d1, devices as d2 WHERE d1.id <> d2.id and d1.serial=d2.serial) as subdevices )
from https://stackoverflow.com/questions/17783906/update-one-of-2-duplicates-in-an-sql-server-database-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 그룹에 스파크 SQL에서 시간 간격으로 (0) | 2020.06.26 |
---|---|
[SQL] SQL : 적어도 N 시간에 발생하는 열 값을 가진 행을 선택? (0) | 2020.06.26 |
[SQL] 에 "연관 테이블"(대다 관계)에 대한 적절한 이름 기능 [폐쇄] (0) | 2020.06.26 |
[SQL] 여러 행에 테이블 반환 함수를 실행? (0) | 2020.06.26 |
[SQL] INET_ATON ()와 PHP의 INET_NTOA ()? (0) | 2020.06.26 |