[SQL] 어떻게 내가 업데이트 위로에게 SQL 서버 (100) 기록을 할 수
SQL어떻게 내가 업데이트 위로에게 SQL 서버 (100) 기록을 할 수
나는 SQL Server에서 100 레코드를 업데이트 할 수 있습니다. I는 필드 F1 및 F2와 테이블 T1을 갖는다. T1 (200 개) 기록을 가지고있다. 나는 100 기록에 F1 필드를 업데이트 할. 어떻게는 SQL Server의 TOP 100을 기준으로 업데이트 할 수 있습니까?
해결법
-
==============================
1.참고 괄호는 UPDATE 문에 필요합니다 :
참고 괄호는 UPDATE 문에 필요합니다 :
update top (100) table1 set field1 = 1
-
==============================
2.많은 이해가되지 않습니다 TOP의 모든 생각하여 ORDER없이. 당신은 방향이 상위의 개념 "다운"의미가있을 것입니다 "최대"이고있는 일관된 정의가 있어야합니다.
많은 이해가되지 않습니다 TOP의 모든 생각하여 ORDER없이. 당신은 방향이 상위의 개념 "다운"의미가있을 것입니다 "최대"이고있는 일관된 정의가 있어야합니다.
그럼에도 불구하고 SQL Server는 할 수 있지만, 결정 결과를 보장하지 않습니다.
허용 대답에 업데이트 TOP 구문은 ORDER BY 절을 지원하지 않습니다하지만 아래와 같이 원하는 정렬 순서를 정의하는 CTE 또는 파생 테이블을 사용하여 여기에 결정적 의미를 얻을 수 있습니다.
;WITH CTE AS ( SELECT TOP 100 * FROM T1 ORDER BY F2 ) UPDATE CTE SET F1='foo'
-
==============================
3.여전히 SQL 서버 2000와 함께 붙어 나 같은 사람들을 위해, SET ROWCOUNT {수}; 업데이트 쿼리하기 전에 사용할 수 있습니다
여전히 SQL 서버 2000와 함께 붙어 나 같은 사람들을 위해, SET ROWCOUNT {수}; 업데이트 쿼리하기 전에 사용할 수 있습니다
SET ROWCOUNT 100; UPDATE Table SET ..; SET ROWCOUNT 0;
100 행에 업데이트를 제한합니다
그것은 SQL 2005 이상에서 사용되지 않는,하지만 SQL 2017로는 여전히 작동하고있다. https://docs.microsoft.com/en-us/sql/t-sql/statements/set-rowcount-transact-sql?view=sql-server-2017
-
==============================
4.
update tb set f1=1 where id in (select top 100 id from tb where f1=0)
-
==============================
5.어떤 경우에도 쿨러 것은 당신이하는 (그리고 얼마나 많은 TOP 통해) 행 (들) 업데이트를 선택 인라인 테이블 반환 함수를 사용할 수 있다는 사실이다. 그건:
어떤 경우에도 쿨러 것은 당신이하는 (그리고 얼마나 많은 TOP 통해) 행 (들) 업데이트를 선택 인라인 테이블 반환 함수를 사용할 수 있다는 사실이다. 그건:
UPDATE MyTable SET Column1=@Value1 FROM tvfSelectLatestRowOfMyTableMatchingCriteria(@Param1,@Param2,@Param3)
테이블 반환 함수를 들어 당신은 같은 업데이트 할 행을 선택하는 흥미로운 뭔가를 :
CREATE FUNCTION tvfSelectLatestRowOfMyTableMatchingCriteria ( @Param1 INT, @Param2 INT, @Param3 INT ) RETURNS TABLE AS RETURN ( SELECT TOP(1) MyTable.* FROM MyTable JOIN MyOtherTable ON ... JOIN WhoKnowsWhatElse ON ... WHERE MyTable.SomeColumn=@Param1 AND ... ORDER BY MyTable.SomeDate DESC )
(내 소견에서), 그리고이 거짓말 결정적으로 UPDATE 문의 구문을 단순화하는 동시에 단지 최고 선택한 행을 업데이트하는 진정한 힘.
-
==============================
6.시험:
시험:
UPDATE Dispatch_Post SET isSync = 1 WHERE ChallanNo IN (SELECT TOP 1000 ChallanNo FROM dbo.Dispatch_Post ORDER BY CreatedDate DESC)
-
==============================
7.또한 별칭과 조인을 사용하여 선택에서 업데이트 할 수 있습니다 :
또한 별칭과 조인을 사용하여 선택에서 업데이트 할 수 있습니다 :
UPDATE TOP (500) T SET T.SomeColumn = 'Value' FROM SomeTable T INNER JOIN OtherTable O ON O.OtherTableFK = T.SomeTablePK WHERE T.SomeOtherColumn = 1
from https://stackoverflow.com/questions/1198364/how-can-i-update-top-100-records-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 자바에서 좋은 동적 SQL 빌더 라이브러리가 있습니까? [닫은] (0) | 2020.04.17 |
---|---|
[SQL] 어떻게 SQL에서 효율적으로 열 값의 발생을 계산하려면? (0) | 2020.04.17 |
[SQL] 기본 키를 사용하여 이메일 주소? (0) | 2020.04.17 |
[SQL] 2008 SQL 서버를 사용하는 경우 조건이 어떻게 여러 CASE해야합니까? (0) | 2020.04.17 |
[SQL] 동적 정렬 SQL 저장 프로 시저 내에서 (0) | 2020.04.17 |