[SQL] 독특한 증분 값을 테이블에 업데이트 INT 열
SQL독특한 증분 값을 테이블에 업데이트 INT 열
나는 행마다 고유 한 값과의 InterfaceID (INT) 열에서 값이 누락 행을 채우기 위해 노력하고 있어요.
나는이 쿼리를 할 노력하고있어 :
UPDATE prices SET interfaceID = (SELECT ISNULL(MAX(interfaceID),0) + 1 FROM prices)
WHERE interfaceID IS null
나는이 (가) (SELECT ISNULL (MAX (interfaceID), 0) + 1 가격 FROM) 바라고하는 것은 모든 행에 대해 평가,하지만 만 할 것이다 번 등 내 모든 영향을받는 행이 아닌 다른 값과 동일한 값을 얻고있다.
이는 단일 쿼리에서 수행 할 수 있습니까?
해결법
-
==============================
1.
declare @i int = SELECT ISNULL(MAX(interfaceID),0) + 1 FROM prices update prices set interfaceID = @i , @i = @i + 1 where interfaceID is null
작업을 수행해야합니다
-
==============================
2.
DECLARE @IncrementValue int SET @IncrementValue = 0 UPDATE Samples SET qty = @IncrementValue,@IncrementValue=@IncrementValue+1
-
==============================
3.간단한 쿼리, 그냥 당신이 원하는 어떤 수에 변수를 설정할 수있다. 다음은 그 수에서 1을 증가시켜 필요한 열을 업데이트합니다. 모든 행을 위해 1을 증가시켜 각 행의 ID를 업데이트 할 수 있습니다
간단한 쿼리, 그냥 당신이 원하는 어떤 수에 변수를 설정할 수있다. 다음은 그 수에서 1을 증가시켜 필요한 열을 업데이트합니다. 모든 행을 위해 1을 증가시켜 각 행의 ID를 업데이트 할 수 있습니다
SET @a = 50000835 ; UPDATE `civicrm_contact` SET external_identifier = @a:=@a+1 WHERE external_identifier IS NULL;
-
==============================
4.포스트 그레스의 경우
포스트 그레스의 경우
ALTER TABLE table_name ADD field_name serial PRIMARY KEY
참조 : https://www.tutorialspoint.com/postgresql/postgresql_using_autoincrement.htm
-
==============================
5.오라클 기반 제품에서는 다음과 같은 문장을 사용할 수 있습니다 :
오라클 기반 제품에서는 다음과 같은 문장을 사용할 수 있습니다 :
update table set interfaceID=RowNum where condition;
-
==============================
6.이 같은 시도 :
이 같은 시도 :
with toupdate as ( select p.*, (coalesce(max(interfaceid) over (), 0) + row_number() over (order by (select NULL)) ) as newInterfaceId from prices ) update p set interfaceId = newInterfaceId where interfaceId is NULL
이것은 확실히 그들이 연속하지 않지만, 할당 새로운 높은 ID를한다. 그들에게 연속하려면이 시도 :
with toupdate as ( select p.*, (coalesce(max(interfaceid) over (), 0) + row_number() over (partition by interfaceId order by (select NULL)) ) as newInterfaceId from prices ) update p set interfaceId = newInterfaceId where interfaceId is NULL
-
==============================
7.이 테이블에 대한 기본 키를 가지고 당신이 (당신이해야)한다고 가정뿐만 아니라 CTE 또는 WITH를 사용하여, 같은 테이블에 자체 조인으로 업데이 트를 사용하는 것도 가능합니다 :
이 테이블에 대한 기본 키를 가지고 당신이 (당신이해야)한다고 가정뿐만 아니라 CTE 또는 WITH를 사용하여, 같은 테이블에 자체 조인으로 업데이 트를 사용하는 것도 가능합니다 :
UPDATE a SET a.interfaceId = b.sequence FROM prices a INNER JOIN ( SELECT ROW_NUMBER() OVER ( ORDER BY b.priceId ) + ( SELECT MAX( interfaceId ) + 1 FROM prices ) AS sequence, b.priceId FROM prices b WHERE b.interfaceId IS NULL ) b ON b.priceId = a.priceId
나는 기본 키 가격-ID라고 가정했다.
파생 테이블, 별명 (B)는, 기본 키 컬럼 (들)과 함께 ROW_NUMBER () 함수를 통해 생성 된 시퀀스에 사용된다. 열 인터페이스 ID가 NULL이 각 행에 대해,이 차 키 값과 함께 고유 시퀀스 값 행을 생성한다.
또한 다른 순서보다는 기본 키 시퀀스를 주문할 수있다.
시퀀스는 서브 질의를 통해 현재 인터페이스 MAX-ID + 1만큼 오프셋된다. 최대 () 함수는 NULL 값을 무시합니다.
절은 NULL입니다 해당 행에 업데이트를 제한하는 곳.
파생 테이블이어서 생성 된 서열 세트를 업데이트 할 수있는 컬럼이있는 기본 키 컬럼 (들)에 결합하는 별명 동일한 테이블에 결합된다.
-
==============================
8.당신은 시도 할 수 있습니다 :
당신은 시도 할 수 있습니다 :
DECLARE @counter int SET @counter = 0 UPDATE [table] SET [column] = @counter, @counter = @counter + 1```
from https://stackoverflow.com/questions/13629382/update-int-column-in-table-with-unique-incrementing-values by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL의 문자열에 캐리지 리턴에 대한 쿼리 및 궁극적으로 캐리지 리턴을 제거 (0) | 2020.06.24 |
---|---|
[SQL] pyodbc 및 MS-Access를 사용하여 파이썬 cursor.execute에서 실제 SQL 쿼리를 참조하는 방법 (0) | 2020.06.24 |
[SQL] CSV 파일에서 SQL 문 삽입 생성 (0) | 2020.06.23 |
[SQL] SQL Server는 누락 된 NULL 값 가입 (0) | 2020.06.23 |
[SQL] 최대 절전 모드에서의 ResultSet을 추출 할 수 (0) | 2020.06.23 |